diff --git a/docs/methods/properties/optical/bethe-salpeter.md b/docs/methods/properties/optical/bethe-salpeter.md index 7d652e5884..22e5dc6831 100644 --- a/docs/methods/properties/optical/bethe-salpeter.md +++ b/docs/methods/properties/optical/bethe-salpeter.md @@ -1,10 +1,11 @@ # *GW* + Bethe-Salpeter equation The Bethe-Salpeter equation (BSE) is a method for computing electronic excitation energies and -optical absorption spectra. We describe in Sec. [1](#header-theory) the theory and implementation of -BSE, in Sec. [2](#header-input) the BSE input keywords and in Sec. [3](#header-example) a full CP2K -input file of a BSE calculation and the corresponding output. For reviews on BSE, see -\[[](#Blase2018), [](#Blase2020), [](#Bruneval2015), [](#Sander2015)\]. +optical absorption spectra. We repeat the theory and implementation of BSE from \[[](#Graml2026)\] +in Sec. [1](#header-theory), in Sec. [2](#header-input) the BSE input keywords and in Sec. +[3](#header-example) a full CP2K input file of a BSE calculation and the corresponding output. For +further references on BSE, see \[[](#Blase2018), [](#Blase2020), [](#Bruneval2015), +[](#Sander2015)\]. (header-theory)= @@ -52,7 +53,7 @@ where $p,q,r,s \in [ 1, N_\mathrm{occ}+N_\mathrm{empty}]$ are KS orbital indices the screened Coulomb interaction is always computed from DFT quantitites, i.e. $W_{0}(\omega=0)$ enters the BSE. $(\mathbf{X}^{(n)},\mathbf{Y}^{(n)})$ with elements $X_{ia}^{(n)}$ and $Y_{ia}^{(n)}$ are the eigenvectors of the excitation $n$, which relate to the wave function of the -electronic excitation \[[](#Blase2020)\], +electronic excitation, $$ \begin{align} @@ -237,8 +238,7 @@ where we drop the excitation index $n$ from now on for better readability. For each excitation level $n$, we have then several quantities, which allow us to quantify the spatial extent of the electron, the hole and their combined two-particle character as combined electron-hole pair, i.e. as an exciton. By that, we can often determine the type of the excited -state, i.e. distinguish between, e.g., valence, Rydberg or charge-transfer states -\[[](#Mewes2018)\]. +state, i.e. distinguish between, e.g., valence, Rydberg or charge-transfer states. First, we define the distance between electron and hole as @@ -352,7 +352,7 @@ In the upper GW/BSE section, the following keywords have been used: Setting a small `ENERGY_CUTOFF_OCC` drastically reduces the computation time and the memory consumption, but also might affect the computed excitation energies $\Omega^{(n)}$. Recommended to use for large systems with more than 30 atoms, but we recommend a careful convergence test by - increasing `ENERGY_CUTOFF_OCC` and observing the effect on $\Omega^{(n)}$ \[[](#Liu2020)\]. + increasing `ENERGY_CUTOFF_OCC` and observing the effect on $\Omega^{(n)}$ \[[](#Graml2026)\]. - [ENERGY_CUTOFF_EMPTY](#CP2K_INPUT.FORCE_EVAL.DFT.XC.WF_CORRELATION.RI_RPA.GW.BSE.ENERGY_CUTOFF_EMPTY) $E_\text{cut}^\text{empty}$: Analogous to `ENERGY_CUTOFF_OCC`, but for the empty states, i.e. only @@ -394,8 +394,8 @@ optical properties: - [XC_FUNCTIONAL](#CP2K_INPUT.FORCE_EVAL.DFT.XC.XC_FUNCTIONAL): Choose between one of the available xc-functionals. The starting point can have a profound influence on the excitation energies - \[[](#Knysh2024)\]. Motivated by the discussion in \[[](#Schambeck2024)\], we strongly recommend - to use BSE@ev*GW*0@PBE, i.e. the PBE functional as DFT starting point (see also + \[[](#Graml2026)\]. Motivated by the discussion in \[[](#Graml2026)\], we strongly recommend to + use BSE@ev*GW*0@PBE, i.e. the PBE functional as DFT starting point (see also [SELF_CONSISTENCY](#CP2K_INPUT.FORCE_EVAL.DFT.XC.WF_CORRELATION.RI_RPA.GW.SELF_CONSISTENCY)). - [BASIS_SET](#CP2K_INPUT.FORCE_EVAL.SUBSYS.KIND.BASIS_SET): Specify the basis set, which affects $N_\mathrm{empty}$ and thus the size of the matrices $A_{ia,jb}$ and $B_{ia,jb}$. The @@ -410,11 +410,11 @@ $100 \cdot N_\mathrm{occ}^2 N_\mathrm{empty}^2$ Bytes. You can see $N_\mathrm{oc $N_\mathrm{empty}$ and the estimated memory consumption from the BSE output. The BSE implementation is well parallelized, i.e. you can use several nodes that can provide the memory. -We have benchmarked the numerical precision of our BSE implementation and compared its results to -the BSE implementation in FHI aims \[[](#Liu2020)\]. For our recommended settings, i.e. -BSE@ev*GW*0@PBE with the aug-cc-pVDZ basis set, we have found excellent agreement with -less than 5 meV mean absolute deviation averaged over the first 10 excitation levels and the 28 -molecules in *Thiel's set* for Singlet excitations. +We have benchmarked the numerical precision of our BSE implementation in \[[](#Graml2026)\] and +compared its results to the BSE implementation in FHI aims \[[](#Liu2020)\]. For our recommended +settings, i.e. BSE@ev*GW*0@PBE with the aug-cc-pVDZ basis set, we have found excellent +agreement with less than 5 meV mean absolute deviation averaged over the first 10 excitation levels +and the 28 molecules in *Thiel's set* for Singlet excitations. The current BSE implementation in CP2K works for molecules. The inclusion of periodic boundary conditions in a Γ-only approach and with full *k*-point sampling is work in progress. diff --git a/src/bse_print.F b/src/bse_print.F index 40f2de1169..4ee98507c5 100644 --- a/src/bse_print.F +++ b/src/bse_print.F @@ -13,6 +13,8 @@ MODULE bse_print USE atomic_kind_types, ONLY: get_atomic_kind + USE bibliography, ONLY: Graml2026,& + cite_reference USE bse_properties, ONLY: compute_and_print_absorption_spectrum,& exciton_descr_type USE bse_util, ONLY: filter_eigvec_contrib @@ -59,6 +61,7 @@ CONTAINS INTEGER :: handle CALL timeset(routineN, handle) + CALL cite_reference(Graml2026) IF (unit_nr > 0) THEN WRITE (unit_nr, *) ' ' @@ -126,8 +129,8 @@ CONTAINS WRITE (unit_nr, '(T2,A4)') 'BSE|' WRITE (unit_nr, '(T2,A4,T7,A41)') 'BSE|', 'sum_jb ( A_ia,jb X_jb^n ) = Ω^n X_ia^n' WRITE (unit_nr, '(T2,A4)') 'BSE|' - WRITE (unit_nr, '(T2,A4,T7,A30)') 'BSE|', 'prelim Ref.: Eq. (36) with B=0' - WRITE (unit_nr, '(T2,A4,T7,A71)') 'BSE|', 'in PRB 92,045209 (2015); http://dx.doi.org/10.1103/PhysRevB.92.045209 .' + WRITE (unit_nr, '(T2,A4,T7,A14)') 'BSE|', 'Ref.: Eq. (18)' + WRITE (unit_nr, '(T2,A4,T7,A61)') 'BSE|', 'in PRB 113,205152 (2026); https://doi.org/10.1103/38k2-d55h .' ELSE WRITE (unit_nr, '(T2,A4,T7,A74)') 'BSE|', '**************************************************************************' WRITE (unit_nr, '(T2,A4,T7,A74)') 'BSE|', '* Full ("ABBA") Bethe Salpeter equation (BSE) (i.e. without TDA) *' @@ -143,6 +146,9 @@ CONTAINS WRITE (unit_nr, '(T2,A4)') 'BSE|' WRITE (unit_nr, '(T2,A4,T7,A62)') 'BSE|', ' sum_jb ( A_ia,jb X_jb^n + B_ia,jb Y_jb^n ) = Ω^n X_ia^n' WRITE (unit_nr, '(T2,A4,T7,A62)') 'BSE|', '- sum_jb ( B_ia,jb X_jb^n + A_ia,jb Y_jb^n ) = Ω^n Y_ia^n' + WRITE (unit_nr, '(T2,A4)') 'BSE|' + WRITE (unit_nr, '(T2,A4,T7,A13)') 'BSE|', 'Ref.: Eq. (8)' + WRITE (unit_nr, '(T2,A4,T7,A61)') 'BSE|', 'in PRB 113,205152 (2026); https://doi.org/10.1103/38k2-d55h .' END IF WRITE (unit_nr, '(T2,A4)') 'BSE|' WRITE (unit_nr, '(T2,A4)') 'BSE|' @@ -164,8 +170,8 @@ CONTAINS WRITE (unit_nr, '(T2,A4,T7,A)') 'BSE|', 'B_ia,jb = α * v_ia,jb' END IF WRITE (unit_nr, '(T2,A4)') 'BSE|' - WRITE (unit_nr, '(T2,A4,T7,A35)') 'BSE|', 'prelim Ref.: Eqs. (24-27),(30),(35)' - WRITE (unit_nr, '(T2,A4,T7,A71)') 'BSE|', 'in PRB 92,045209 (2015); http://dx.doi.org/10.1103/PhysRevB.92.045209 .' + WRITE (unit_nr, '(T2,A4,T7,A14)') 'BSE|', 'Ref.: Eq. (10)' + WRITE (unit_nr, '(T2,A4,T7,A61)') 'BSE|', 'in PRB 113,205152 (2026); https://doi.org/10.1103/38k2-d55h .' END IF IF (.NOT. flag_TDA) THEN WRITE (unit_nr, '(T2,A4)') 'BSE|' @@ -382,10 +388,10 @@ CONTAINS WRITE (unit_nr, '(T2,A4,T9,A2,T14,A18)') & 'BSE|', "r:", "position operator." WRITE (unit_nr, '(T2,A4)') 'BSE|' - WRITE (unit_nr, '(T2,A4,T7,A28)') & - 'BSE|', "prelim Ref.: Eqs. (23), (24)" - WRITE (unit_nr, '(T2,A4,T7,A71)') & - 'BSE|', "in J. Chem. Phys. 152, 044105 (2020); https://doi.org/10.1063/1.5123290" + WRITE (unit_nr, '(T2,A4,T7,A21)') & + 'BSE|', "Ref.: Eqs. (21), (D3)" + WRITE (unit_nr, '(T2,A4,T7,A69)') & + 'BSE|', "in Phys. Rev. B 113, 205152 (2026); https://doi.org/10.1103/38k2-d55h" WRITE (unit_nr, '(T2,A4)') 'BSE|' IF (flag_TDA) THEN WRITE (unit_nr, '(T2,A4,T7,A55)') 'BSE|', & @@ -596,10 +602,10 @@ CONTAINS prefix_output, "r:", "position operator." WRITE (unit_nr, '(T2,A4)') prefix_output WRITE (unit_nr, '(T2,A4,T7,A)') prefix_output, & - 'prelim Ref.: Eqs. (15)-(22)' + 'Ref.: Eqs. (28)-(32)' WRITE (unit_nr, '(T2,A4,T7,A,A)') prefix_output, & - 'JCTC 2018, 14, 710-725; ', & - 'http://doi.org/10.1021/acs.jctc.7b01145' + 'Phys. Rev. B 113, 205152 (2026); ', & + 'https://doi.org/10.1103/38k2-d55h' WRITE (unit_nr, '(T2,A4)') prefix_output WRITE (unit_nr, '(T2,A4)') prefix_output IF (exc_descr(1)%flag_TDA) THEN @@ -660,6 +666,12 @@ CONTAINS WRITE (unit_nr, '(T2,A4,T15,A)') prefix_output, & "R_eh^{μμ'} = COV_eh^{μμ'}/(σ^μ_e σ^μ_h) " WRITE (unit_nr, '(T2,A4)') prefix_output + WRITE (unit_nr, '(T2,A4,T7,A)') prefix_output, & + 'Ref.: Eqs. (33)-(36)' + WRITE (unit_nr, '(T2,A4,T7,A,A)') prefix_output, & + 'Phys. Rev. B 113, 205152 (2026); ', & + 'https://doi.org/10.1103/38k2-d55h' + WRITE (unit_nr, '(T2,A4)') prefix_output WRITE (unit_nr, '(T2,A4)') prefix_output IF (exc_descr(1)%flag_TDA) THEN WRITE (unit_nr, '(T2,A4,T7,A,A,A)') prefix_output, & diff --git a/src/common/bibliography.F b/src/common/bibliography.F index e36fb273ff..621576c26d 100644 --- a/src/common/bibliography.F +++ b/src/common/bibliography.F @@ -93,7 +93,7 @@ MODULE bibliography Sander2015, Schreiber2008, vanSetten2015, Setyawan2010, Ahart2024, Knysh2024, & Schambeck2024, Mewes2018, Sertcan2024, Drautz2019, Lysogorskiy2021, Bochkarev2024, & VazdaCruz2021, Chen2025, Hernandez2025, Marek2025, Hehn2022, Hehn2024, Pasquier2025, & - Hanasaki2025, Tan2025, Broyden1965, Johnson1988, Kerker1981, & + Hanasaki2025, Graml2026, Tan2025, Broyden1965, Johnson1988, Kerker1981, & FuHo1983, MethfesselPaxton1989, Marzari1999, dosSantos2023, Mermin1965, & KuhneHeskeProdan2020, Schreder2021, Schreder2024_1, Schreder2024_2, & Shiga2022, Lindh1995, Chai2024a, Rullan2026, Sundararaman2017, Andreussi2019, & @@ -2093,6 +2093,13 @@ CONTAINS source="Phys. Rev. B", volume="112", pages="205130", & year=2025, doi="10.1103/v4zv-1pf9") + CALL add_reference(key=Graml2026, & + authors=s2a("M. Graml", "J. Wilhelm"), & + title="Optical excitations in nanographenes from the Bethe-Salpeter equation "// & + "and time-dependent density functional theory: Absorption spectra and spatial descriptors", & + source="Phys. Rev. B", volume="113", pages="205152", & + year=2026, doi="10.1103/38k2-d55h") + CALL add_reference(key=Hanasaki2025, & authors=s2a("K. Hanasaki", "T. Futaii de Jong", "K. Komarov", "R. Kumar", "M. Malis", & "J. Mattiat", "L. I. Hernandez-Segura", "L. Schreder", "A. Sinyavskiy", "S. Luber"), &