# LOW_SCALING

References: Wilhelm2016b, Wilhelm2018, Bussy2023

Cubic scaling RI-RPA, GW and Laplace-SOS-MP2 method using the imaginary time formalism. EPS_GRID in WFC_GPW section controls accuracy / req. memory for 3-center integrals. SORT_BASIS EXP should be specified in DFT section. [Edit on GitHub]

Subsections

- CPHF

## Keywords

- SECTION_PARAMETERS

- DO_EXTRAPOLATE_KPOINTS

- DO_KPOINTS

- EPS_EIGVAL_S

- EPS_EIGVAL_S_GAMMA

- EPS_FILTER

- EPS_FILTER_FACTOR

- EPS_STORAGE_SCALING

- EXPONENT_TAILORED_WEIGHTS

- KEEP_QUADRATURE

- KPOINTS

- KPOINT_WEIGHTS_W

- K_MESH_G_FACTOR

- MAKE_CHI_POS_DEFINITE

- MAKE_OVERLAP_MAT_AO_POS_DEFINITE

- MEMORY_CUT

- MEMORY_INFO

- MIN_BLOCK_SIZE

- MIN_BLOCK_SIZE_MO

- REGULARIZATION_RI

- REL_CUTOFF_TRUNC_COULOMB_RI_X

- TRUNC_COULOMB_RI_X

## Keyword descriptions

SECTION_PARAMETERS: logical = F

  Lone keyword: `T`

  Usage: &LOW_SCALING .TRUE.

  Activates cubic-scaling RPA, GW and Laplace-SOS-MP2 calculations. [Edit on GitHub]

DO_EXTRAPOLATE_KPOINTS: logical = T

  Lone keyword: `T`

  Usage: DO_EXTRAPOLATE_KPOINTS FALSE

  If true, use a larger k-mesh to extrapolate the k-point integration of W. For example, in 2D, when using KPOINTS 4 4 1, an additional 6x6x1 mesh will be used to extrapolate the k-point integration of W with N_k^-0.5, where Nk is the number of k-points. [Edit on GitHub]

DO_KPOINTS: logical = F

  Lone keyword: `T`

  Usage: DO_KPOINTS

  Besides in DFT, this keyword has to be switched on if one wants to do kpoints in. cubic RPA. [Edit on GitHub]

EPS_EIGVAL_S: real = 0.00000000E+000

  Usage: EPS_EIGVAL_S 1.0E-3

  Parameter to reduce the expansion coefficients in RI for periodic GW. Removes all eigenvectors and eigenvalues of S_PQ(k) that are smaller than EPS_EIGVAL_S. [Edit on GitHub]

EPS_EIGVAL_S_GAMMA: real = 0.00000000E+000

  Usage: EPS_EIGVAL_S_GAMMA 1.0E-3

  Parameter to reduce the expansion coefficients in RI for periodic GW. Removes all eigenvectors and eigenvalues of M_PQ(k=0) that are smaller than EPS_EIGVAL_S. [Edit on GitHub]

EPS_FILTER: real = 1.00000000E-009

  Usage: EPS_FILTER 1.0E-10

  Determines a threshold for the DBCSR based multiply. Normally, this EPS_FILTER determines accuracy and timing of low-scaling RPA and GW calculations. [Edit on GitHub]

EPS_FILTER_FACTOR: real = 1.00000000E+001

  Multiply EPS_FILTER with this factor to determine filter epsilon for DBCSR based multiply P(it)=(Mocc(it))^T*Mvirt(it) Default should be kept. [Edit on GitHub]

EPS_STORAGE_SCALING: real = 1.00000000E-003

  Aliases: EPS_STORAGE

  Scaling factor to scale EPS_FILTER. Storage threshold for compression will be EPS_FILTER*EPS_STORAGE_SCALING. [Edit on GitHub]

EXPONENT_TAILORED_WEIGHTS: real = -2.00000000E+000

  Usage: EXPONENT_TAILORED_WEIGHTS -2

  Gives the exponent of exactly integrated function in case ‘KPOINT_WEIGHTS_W TAILORED’ is chosen. [Edit on GitHub]

KEEP_QUADRATURE: logical = T

  Aliases: KEEP_WEIGHTS ,KEEP_QUAD ,KEEP_WEIGHT

  Lone keyword: `T`

  Usage: KEEP_QUADRATURE

  Keep the Laplace quadrature defined at the first energy evaluations throughout the run. Allows to have consistent force evaluations. [Edit on GitHub]

KPOINTS: integer[3] = 0 0 0

  Usage: KPOINTS N_x N_y N_z

  Keyword activates periodic, low-scaling GW calculations (&LOW_SCALING section also needed). For periodic calculations, kpoints are used for the density response, the Coulomb interaction and the screened Coulomb interaction. For 2d periodic systems, e.g. xz periodicity, please also specify KPOINTS, e.g. N_x 1 N_z. [Edit on GitHub]

KPOINT_WEIGHTS_W: enum = UNIFORM

  Usage: KPOINT_WEIGHTS_W AUTO

  Valid values:

  - `TAILORED` Choose k-point integration weights such that the function f(k)=k^alpha is exactly integrated. alpha is specified using EXPONENT_TAILORED_WEIGHTS.

  - `AUTO` As ‘TAILORED’, but alpha is chosen automatically according to dimensionality (3D: alpha = -2 for 3D, 2D: alpha = -1 for exchange self-energy, uniform weights for correlation self-energy).

  - `UNIFORM` Choose the same weight for every k-point (original Monkhorst-Pack method).

  For kpoints in low-scaling GW, a Monkhorst-Pack mesh is used. The screened Coulomb interaction W(k) needs special care near the Gamma point (e.g. in 3d, W(k) diverges at the Gamma point with W(k) ~ k^alpha). KPOINT_WEIGHTS_W decides how the weights of the Monkhorst-Pack mesh are chosen to compute W(R) = int_BZ W(k) exp(ikR) dk (BZ=Brllouin zone). [Edit on GitHub]

K_MESH_G_FACTOR: integer = 1

  The k-mesh for the Green’s function can be chosen to be larger than the k-mesh for W (without much higher computational cost). The factor given here multiplies the mesh for W to obtain the k-mesh for G. Example: factor 4, k-mesh for W: 4x4x1 -> k-mesh for G: 16x16x1 (z-dir. is non-periodic). [Edit on GitHub]

MAKE_CHI_POS_DEFINITE: logical = T

  Lone keyword: `T`

  Usage: MAKE_CHI_POS_DEFINITE

  If true, makes eigenvalue decomposition of chi(iw,k) and removes negative eigenvalues. May increase computational cost significantly. Only recommended to try in case Cholesky decomposition of epsilon(iw,k) fails. [Edit on GitHub]

MAKE_OVERLAP_MAT_AO_POS_DEFINITE: logical = F

  Lone keyword: `T`

  Usage: MAKE_OVERLAP_MAT_AO_POS_DEFINITE

  If true, makes eigenvalue decomposition of S_mu,nu(k) and removes negative eigenvalues. Slightly increases computational cost. Only recommended to try in case Cholesky decomposition of S_mu,nu(k) fails (error message: Cholesky decompose failed: matrix is not positive definite or ill-conditioned; when calling create_kp_and_calc_kp_orbitals). [Edit on GitHub]

MEMORY_CUT: integer = 5

  Usage: MEMORY_CUT 16

  Reduces memory for sparse tensor contractions by this factor. A high value leads to some loss of performance. This memory reduction factor applies to storage of the tensors ‘M occ’ / ‘M virt’ but does not reduce storage of ‘3c ints’. [Edit on GitHub]

MEMORY_INFO: logical = F

  Lone keyword: `T`

  Usage: MEMORY_INFO

  Decide whether to print memory info on the sparse matrices. [Edit on GitHub]

MIN_BLOCK_SIZE: integer = 5

  Minimum tensor block size. Adjusting this value may have minor effect on performance but default should be good enough. [Edit on GitHub]

MIN_BLOCK_SIZE_MO: integer = 64

  Tensor block size for MOs. Only relevant for GW calculations. The memory consumption of GW scales as O(MIN_BLOCK_SIZE_MO). It is recommended to set this parameter to a smaller number if GW runs out of memory. Otherwise the default should not be changed. [Edit on GitHub]

REGULARIZATION_RI: real = 0.00000000E+000

  Usage: REGULARIZATION_RI 1.0E-4

  Parameter to reduce the expansion coefficients in RI for periodic GW. Larger parameter means smaller expansion coefficients that leads to a more stable calculation at the price of a slightly worse RI approximation. In case the parameter 0.0 is chosen, ordinary RI is used. [Edit on GitHub]

REL_CUTOFF_TRUNC_COULOMB_RI_X: real = 5.00000000E-001

  Usage: REL_CUTOFF_TRUNC_COULOMB_RI_X 0.3

  Only active in case TRUNC_COULOMB_RI_X = True. Normally, relative cutoff = 0.5 is good choice; still needs to be evaluated for RI schemes. [Edit on GitHub]

TRUNC_COULOMB_RI_X: logical = T

  Lone keyword: `T`

  Usage: TRUNC_COULOMB_RI_X

  If true, use the truncated Coulomb operator for the exchange-self-energy in periodic GW. [Edit on GitHub]