diff --git a/docs/methods/properties/bandstructure_gw.md b/docs/methods/properties/bandstructure_gw.md index caa1899773..02fb24c89d 100644 --- a/docs/methods/properties/bandstructure_gw.md +++ b/docs/methods/properties/bandstructure_gw.md @@ -25,7 +25,7 @@ electronic band structure of a solid. This approximation comes with limitations: - When using one of the common GGA exchange-correlation (xc) functionals, the band gap in the KS-DFT band structure $\varepsilon_{n\mathbf{k}}^\text{DFT}$ is much too small compared to experimental - band gaps (Fig. 26 in \[[](#Golze2019))\]. Even with the exact xc functional, the band gap in the + band gaps (Fig. 26 in \[[](#Golze2019)\]). Even with the exact xc functional, the band gap in the KS-DFT band structure $\varepsilon_{n\mathbf{k}}^\text{DFT}$ will be too small due to the derivative discontinuity. @@ -127,7 +127,7 @@ In the upper *GW* section, the following keywords have been used: - [QUADRATURE_POINTS](#CP2K_INPUT.FORCE_EVAL.DFT.XC.WF_CORRELATION.RI_RPA.QUADRATURE_POINTS): Number of imaginary-frequency points used for computing the self-energy (Eq. (21) in - \[[](#Wilhelm2016))\]. 100 points are usually enough for converging quasiparticle energies within + \[[](#Wilhelm2016)\]). 100 points are usually enough for converging quasiparticle energies within 10 meV. - [SELF_CONSISTENCY](#CP2K_INPUT.FORCE_EVAL.DFT.XC.WF_CORRELATION.RI_RPA.GW.SELF_CONSISTENCY): @@ -281,7 +281,7 @@ Running the input file requires access to a large computer (the calculation took nodes on Noctua2 cluster in Paderborn). The computational parameters from this input file reach numerical convergence of the band gap within ~ 50 meV (TZVP basis set, 10 time and frequency points). Detailed convergence tests are available in the SI, Table S1 of \[[](#Graml2024)\] We -recommend the numerical parameters from the input file for large-scale GW calculations. The code +recommend the numerical parameters from the input file for large-scale *GW* calculations. The code prints restart files with ending .matrix that can be used to restart a crashed calculation. In case anything does not work, please feel free to contact jan.wilhelm (at) ur.de. diff --git a/docs/methods/properties/optical/index.md b/docs/methods/properties/optical/index.md index 7f8f2e4a4b..3aed11b1af 100644 --- a/docs/methods/properties/optical/index.md +++ b/docs/methods/properties/optical/index.md @@ -9,4 +9,58 @@ tddft bethe-salpeter ``` -TODO: Add Introduction and comparison between TDDFT and BSE. +Optical spectroscopy is a technique used to study the interaction between light and matter. It +involves measuring the absorption, emission, or scattering of light by molecules, atoms, or +materials. The resulting spectra provide valuable information about the electronic structure, energy +levels, and dynamics of the system under investigation. + +In optical spectroscopy, one of the key quantities of interest is the excitation energy +($\Omega_n$). This is the energy required to excite a molecule from its ground state to an excited +state. These excitation energies are directly related to the positions and intensities of spectral +lines observed in absorption and emission spectra. + +The excitation energies $\Omega_n$ can be computed using various theoretical approaches. Two +commonly used methods are linear-response Time-Dependent Density Functional Theory (LR-TDDFT) and +the linear-response *GW*/Bethe-Salpeter Equation (*GW*/BSE) approach. Both methods can be formulated +using Casida's equation + +$$\left( \begin{array}{cc}A & B\\B & A\end{array} \right)\left( \begin{array}{cc}\mathbf{X}^{(n)}\\\mathbf{Y}^{(n)}\end{array} \right) = \Omega^{(n)}\left(\begin{array}{cc}1&0\\0&-1\end{array}\right)\left(\begin{array}{cc}\mathbf{X}^{(n)}\\\mathbf{Y}^{(n)}\end{array}\right) \quad .$$ + +We abbreviate $A$ and $B$ as matrices with index $A_{ia,jb}$, i.e. they have +$N_\mathrm{occ}N_\mathrm{empty}$ rows and $N_\mathrm{occ}N_\mathrm{empty}$ columns. The matrices $A$ +and $B$ are different in TDDFT and *GW*/BSE; for TDDFT they read (for singlet excitations, details +on the TDDFT page) + +$$ \begin{align} + A_{ia,jb} &= (\varepsilon_a^\text{DFT}-\varepsilon_i^\text{DFT})\delta_{ij}\delta_{ab} + + 2v_{ia,jb} + \langle ia|f_\text{xc}(\Omega^{(n)})|jb\rangle \quad ,\\[0.5em] + B_{ia,jb} &= 2v_{ia,bj} + \langle ia|f_\text{xc}(\Omega^{(n)})|jb\rangle \quad , +\end{align}$$ + +and for *GW*/BSE (details on the *GW*/BSE page): + +$$ \begin{align} + A_{ia,jb} &= (\varepsilon_a^{GW}-\varepsilon_i^{GW})\delta_{ij}\delta_{ab} + + 2v_{ia,jb} - W_{ij,ab} \quad ,\\[0.5em] + B_{ia,jb} &= 2 v_{ia,bj} - W_{ib,aj} \quad . +\end{align}$$ + +TDDFT with the common Adiabatic Local Density Approximation (ALDA) or with a hybrid functional (i.e. +PBE0) can be a good choice for calculating excitation energies of molecules. Exceptions include +charge-transfer excitations where the excited electron is transferred over a significant distance +within the molecule. In such cases, range-separated hybrid functionals might be needed. + +For solids, the applicability of TDDFT can depend on whether the solid is metallic or has a finite +bandgap. For metals, ALDA often yields good excitation energies. However, for semiconductors and +insulators, ALDA fails because the ALDA xc kernel does not adequately include the Coulomb +interaction between the electron and the hole of the electron-hole pair (exciton) that forms upon +excitation. In contrast, the *GW*/BSE approach is well-suited for computing the excitation energies +of excitons in semiconductors and insulators. *GW*/BSE accounts for the attractive interaction +between the electron and hole in the A-matrix via the screened Coulomb interaction $W_{ij,ab}$. This +inclusion is crucial for accurately describing excitonic effects, which are significant in materials +with a finite bandgap. + +Thus, TDDFT with ALDA/hybrid functionals is convenient and computationally less demanding than +*GW*/BSE for molecular systems and metals, *GW*/BSE can describe excitonic effects in semiconductors +and insulators. For a more detailed discussion on TDDFT and *GW*/BSE, we recommend for example C. A. +Ullrich, *Time-Dependent Density-Functional Theory - Concepts and Applications*. diff --git a/src/common/bibliography.F b/src/common/bibliography.F index 7dfbb5fe06..c3b9eed747 100644 --- a/src/common/bibliography.F +++ b/src/common/bibliography.F @@ -12,17 +12,10 @@ !> (often ourselves, but this need not to be the case), and as a form !> of documentation. !> -!> reference_manager.F provides an easy way to cite these references from the code +!> add references here as an easy way to cite these references from the code !> (e.g., whenever the relevant part of the code is executed) !> and to add citations to the input !> at the end of the run a bibliography is printed that can be used, e.g., in papers -!> \note -!> references need to be input using the ISI citation format, because it is -!> uniform, easy to parse, and can be exported for example from web of science. -!> (mark the reference, and click 'export to reference software', open the resulting file) -!> Furthermore, it can be easily converted to and from using the bibutils tools -!> a collection of easy to use conversion programs that can be found at -!> https://ctan.org/pkg/bibutils by Chris Putnam !> \author Joost VandeVondele ! ************************************************************************************************** MODULE bibliography @@ -104,10 +97,16 @@ CONTAINS !> \par History !> 08.2007 created [Joost VandeVondele] !> \note -!> - note that the ISI record is fixed format (line length limited and the -!> first 3 characters can indicate record type) !> - please add DOI whenever available, this will result in a clickable !> link in the input reference manual. +!> - please provide for journal articles: +!> - all author names, abbreviate the first names +!> - the title of the article +!> - the abbreviated journal name (please use the ISO4 standard) +!> - volume +!> - pages (in case there is starting and end page: please provide start page-end page; +!> in case there is article number, e.g. J. Chem. Phys, Phys. Rev., then provide +!> the article number) ! ************************************************************************************************** SUBROUTINE add_all_references() CALL add_reference(key=Ceriotti2012, &