# GW

Parameters needed to set up a GW calculation for electronic level energies \(\varepsilon_{n\mathbf{k}}^{G_0W_0}\) of molecules and the band structure of materials: \(\varepsilon_{n\mathbf{k}}^{G_0W_0}= \varepsilon_{n\mathbf{k}}^\text{DFT}+\Sigma_{n\mathbf{k}} -v^\text{xc}_{n\mathbf{k}}\). For the GW algorithm for molecules, see https://doi.org/10.1021/acs.jctc.0c01282. For 2D materials, see https://doi.org/10.1021/acs.jctc.3c01230. [Edit on GitHub]

Subsections

- PRINT

## Keywords

- SECTION_PARAMETERS

- APPROX_KP_EXTRAPOL

- CUTOFF_RADIUS_RI

- EPS_FILTER

- FREQ_MAX_FIT

- HEDIN_SHIFT

- KPOINTS_W

- MEMORY_PER_PROC

- NUM_TIME_FREQ_POINTS

- REGULARIZATION_MINIMAX

- REGULARIZATION_RI

- SIZE_LATTICE_SUM

## Keyword descriptions

SECTION_PARAMETERS: logical = F

  Lone keyword: `T`

  Controls the activation of the GW calculation. [Edit on GitHub]

APPROX_KP_EXTRAPOL: logical = F

  Lone keyword: `T`

  Usage: APPROX_KP_EXTRAPOL

  If true, use only a 4x4 kpoint mesh for frequency points \(\omega_j, j \ge 2\) (instead of a 4x4 and 6x6 k-point mesh). The k-point extrapolation of \(W_{PQ}(i\omega_j,\mathbf{q})\) is done approximately from \(W_{PQ}(i\omega_1,\mathbf{q})\). [Edit on GitHub]

CUTOFF_RADIUS_RI: real = 3.00000000E+000 [angstrom]

  Usage: CUTOFF_RADIUS_RI 3.0

  Mentions: ⭐Electronic band structure from GW

  The cutoff radius (in Angstrom) for the truncated Coulomb operator. The larger the cutoff radius, the faster converges the resolution of the identity (RI) with respect to the RI basis set size. Larger cutoff radius means higher computational cost. [Edit on GitHub]

EPS_FILTER: real = 1.00000000E-008

  Usage: EPS_FILTER 1.0E-6

  Mentions: ⭐Electronic band structure from GW

  Determines a threshold for the DBCSR based sparse multiplications. Normally, `EPS_FILTER` determines accuracy and timing of low-scaling GW calculations. (Lower filter means higher numerical precision, but higher computational cost.) [Edit on GitHub]

FREQ_MAX_FIT: real = 1.00000000E+001 [eV]

  Usage: FREQ_MAX_FIT 20.0

  For analytic continuation, a fit on Σ(iω) is performed. This fit is then evaluated at a real frequency, Σ(ω), which is used in the quasiparticle equation \(\varepsilon_{n\mathbf{k}}^{G_0W_0}= \varepsilon_{n\mathbf{k}}^\text{DFT}+\Sigma_{n\mathbf{k}} -v^\text{xc}_{n\mathbf{k}}\). The keyword FREQ_MAX_FIT determines fitting range for the self-energy Σ(iω) on imaginary axis: i*[0, ω_max] for empty orbitals/bands, i*[-ω_max,0] for occ orbitals. A smaller ω_max might lead to better numerical stability (i.e., if you observe clearly wrong GW eigenvalues/bands around HOMO/LUMO, decreasing ω_max might fix this issue). A small benchmark of ω_max is contained in Fig. 5 of J. Wilhelm et al., JCTC 12, 3623-3635 (2016). Note that we used ω_max = 1 Ha = 27.211 eV in the benchmark M. Azizi et al., PRB 109, 245101 (2024). [Edit on GitHub]

HEDIN_SHIFT: logical = F

  Lone keyword: `T`

  Usage: HEDIN_SHIFT

  If true, use Hedin’s shift in G0W0, evGW and evGW0. Details see in Li et al. JCTC 18, 7570 (2022), Figure 1. G0W0 with Hedin’s shift should give similar GW eigenvalues as evGW0; at a lower computational cost. [Edit on GitHub]

KPOINTS_W: integer[3] = -1 -1 -1

  Usage: KPOINTS_W N_x N_y N_z

  Monkhorst-Pack k-point mesh of size N_x, N_y, N_z for calculating \(W_{PQ}^\mathbf{R}=\int_\text{BZ}\frac{d\mathbf{k}}{\Omega_\text{BZ}}\, e^{-i\mathbf{k}\cdot\mathbf{R}}\,W_{PQ}(\mathbf{k})\). For non-periodic directions α, choose N_α = 1. Automatic choice of the k-point mesh for negative values, i.e. KPOINTS_W -1 -1 -1. K-point extrapolation of W is automatically switched on. [Edit on GitHub]

MEMORY_PER_PROC: real = 2.00000000E+000

  Usage: MEMORY_PER_PROC 16

  Mentions: ⭐Electronic band structure from GW

  Specify the available memory per MPI process. Set `MEMORY_PER_PROC` as accurately as possible for good performance. If `MEMORY_PER_PROC` is set lower as the actually available memory per MPI process, the performance will be bad; if `MEMORY_PER_PROC` is set higher as the actually available memory per MPI process, the program might run out of memory. You can calculate `MEMORY_PER_PROC` as follows: Get the memory per node on your machine, mem_per_node (for example, from a supercomputer website, typically between 100 GB and 2 TB), get the number of MPI processes per node, n_MPI_proc_per_node (for example from your run-script; if you use slurm, the number behind ‘–ntasks-per-node’ is the number of MPI processes per node). Then calculate `MEMORY_PER_PROC` = mem_per_node / n_MPI_proc_per_node (typically between 2 GB and 50 GB). Unit of keyword: Gigabyte (GB). [Edit on GitHub]

NUM_TIME_FREQ_POINTS: integer = 30

  Usage: NUM_TIME_FREQ_POINTS 30

  Mentions: ⭐Electronic band structure from GW

  Number of discrete points for the imaginary-time grid and the imaginary-frequency grid. The more points, the more precise is the calculation. Typically, 10 points are good for 0.1 eV precision of band structures and molecular energy levels, 20 points for 0.03 eV precision, and 30 points for 0.01 eV precision, see Table I in https://doi.org/10.1021/acs.jctc.0c01282. GW computation time increases linearly with `NUM_TIME_FREQ_POINTS`. [Edit on GitHub]

REGULARIZATION_MINIMAX: real = -1.00000000E+000

  Usage: REGULARIZATION_MINIMAX 1.0E-4

  Parameter to regularize the Fourier transformation with minimax grids. In case the parameter 0.0 is chosen, no regularization is performed. [Edit on GitHub]

REGULARIZATION_RI: real = -1.00000000E+000

  Usage: REGULARIZATION_RI 1.0E-4

  Mentions: ⭐Electronic band structure from GW

  Parameter for RI regularization, setting a negative value triggers the default value. Affects RI basis set convergence but in any case large RI basis will give RI basis set convergence. [Edit on GitHub]

SIZE_LATTICE_SUM: integer = 3

  Usage: SIZE_LATTICE_SUM 4

  Parameter determines how many neighbor cells \(\mathbf{R}\) are used for computing \(V_{PQ}(\mathbf{k}) = \sum_{\mathbf{R}} e^{i\mathbf{k}\cdot\mathbf{R}}\,\langle P, \text{cell}{=}\mathbf{0}|1/r|Q,\text{cell}{=}\mathbf{R}\rangle\). Normally, parameter does not need to be touched. [Edit on GitHub]