# MBPT scheme¶

Note

This page describes technical aspects of the MBPT (Many-Body Perturbation Theory) module which is used in double-hybrid and MP2, RPA and GW calculations. In order to use double-hybrids, MP2 or RPA in your calculation you should request it in the XC input block. In order to perform a GW calculation, you should request it in the GW input block.

ADF implements RPA, GW, and SOS-MP2 (spin-opposite-scaled) using a newly designed algorithm which in all cases scales quadratically with system size [1] [3]. Full MP2 is at the moment only implemented using the canonical RI-algorithm which scales to the fifth power with system size. Thus, we strongly discourage using full MP2 or double-hybrids employing full MP2 for system larger than 1000-1500 basis functions. At the moment ADF features a large number of double-hybrids using SOS-MP2 only (For a list of implemented functionals see XC input block) which are significantly faster than conventional double-hybrids while offering the same level of accuracy [2].

GW, MP2, RPA and double-hybrid functionals can be used icw scalar relativistic effects within the `ZORA`

, `X2C`

, or `RA-X2C`

formalism.
In ADF2022 and later MP2 and double-hybrid functionals can be used icw spin-orbit coupling. Note that in case of spin-orbit coupling approximate SS and OS contributions are calculated.
GW and RPA can not be used icw spin-orbit coupling.
In ADF2022 in case of ZORA by default the so called scaled ZORA orbital energies are used in the MBPT expressions.

The Formalism used in the double-hybrid calculation can be changed using the Formalism key. By default, ADF selects the most appropriate algorithm for your system and functional.

The calculation of the independent-particle polarizability or Kohn-Sham density response function in imaginary time is the key step in SOS-MP2, RPA and G_{0}W_{0}. The equations are solved in the atomic orbital basis exploiting sparsity via advanced density fitting techniques (so-called pair-atomic resolution of the identity or pair-atomic density fitting) [1]. In case of a SOS-MP2 or RPA calculation, the polarizability is than contracted with the Coulomb potential. For SOS-MP2, the correlation energy is then immediately evaluated in imaginary time while in a RPA calculation the product of Coulomb potential and polarizability is Fourier transformed to the imaginary frequency axis where the correlation energy is evaluated using a matrix logarithm. In a G_{0}W_{0} calculation, the polarizability is Fourier transformed to the imaginary frequency axis as well where the so-called screened interaction is calculated. The QP states are then evaluated along the real-frequency axis using analytical continuation techniques.

## Recommended numerical settings¶

For all calculations using the MBPT scheme (which includes GW, RPA, MP2, and double hybrids), we recommend to consider the following points:

**Dependency**

In ADF2022 a similar method was implemented as was used in the RIHARTREEFOCK scheme to improve stability of the results with the subkey DEPENDENCY of the key MBPT:

```
MBPT
Dependency Yes/No
End
```

`MBPT`

`Dependency`

Type: Bool Default value: Yes Description: If true, to improve numerical stability, almost linearly-dependent combination of basis functions are removed from the density matrices that are used in the MBPT equations.

In addition one may remove linear dependencies in the basis set, by using the `Dependency`

key. For example

```
DEPENDENCY
BAS 5e-04
END
```

**Augmented basis sets:**Set the dependency key to values between 1e-3 and 5e-3

**Non-augmented basis sets:**Set the dependency key to values between 5e-4 and 5e-3

**quasiparticle selfconsistent GW:**A value of 5e-3 is usually a good choice

Starting from AMS2022 ADF will use a `Dependency bas=5e-3`

and `RIHartreeFock DependencyThreshold=5e-3`

in case of (any variant of) GW.
One can override these values in the input.

**Numerical Quality**

**Augmented basis sets:**Numerical quality should be

`VeryGood`

**Non-augmented basis sets, TZ:**Numerical quality should range from

`Normal`

to `VeryGood`

**Non-augmented basis sets, QZ:**Numerical quality should range from

`Good`

to `VeryGood`

There is also the option to choose a different numerical quality for the MBPT and the preceding DFT calculation:

```
MBPT
NumericalQuality Good
END
```

sets the numerical quality to Good only for the MBPT calculation. More info can be found in the MBPT input block section.

**The sizes of the imaginary time and imaginary frequency grids** can be controlled with the `nTime`

and `nFrequency`

keys. For example:

```
MBPT
nTime 32
nFrequency 32
END
```

In case of SOS-MP2, `nFrequency`

is ignored. For SOS-MP2, the default is 9 points. The numerical quality automatically sets the number of grid points for imaginary time and frequency integration in case of a GW or RPA calculation:

Numerical quality |
Number of points |

VERYBASIC | 8 |

BASIC | 12 |

NORMAL | 16 |

GOOD | 20 |

VERYGOOD | 24 |

EXCELLENT | 32 |

For a MP2 or double hybrid calculation, see default is always 9 points, independently of the numerical quality. Note, that the requirements for this parameter are in general lower than for a GW or RPA calculation.

**Note** the following: The number of points actually used in a calculation can differ. At runtime, the MBPT algorithm decides what is the maximum number of integration points which is reasonable to use. So the actual number of points which has been used will be equal or smaller. In case the number of points is set by hand, some info is printed in the output. In case of a GW calculation, the numbers of points can also be found in adf.log file in the `GW`

section under the names `nTime`

and `nFrequency`

.

**Changing the defaults** can be necessary in case your system contains 4th row elements or heavier and/or your basis set is very large and/or your system has a very small HOMO-LUMO gap. For a GW calculation, 24 points should be sufficient for 5th row elements. 32 points might be required for 6th row elements. The maximum number of points which can be used is 42. For a MP2 calculation, 16 points will usually be sufficient if your systems contains 4th row elements, and 20 points will usually suffice in case of 5th row elements. Note, that also a very small HOMO-LUMO.

```
MBPT
Formalism [Auto | RI | LT | All]
nTime integer
nFrequency integer
FitSetQuality [Auto | VeryBasic | Basic | Normal | Good | VeryGood]
IntegrationQuality [VeryBasic | Basic | Normal | Good | VeryGood]
ThresholdQuality [VeryBasic | Basic | Normal | Good | VeryGood | Excellent]
Dependency Yes/No
UseScaledZORA Yes/No
End
```

`MBPT`

Type: Block Description: Technical aspects of the MP2 algorithm. `Formalism`

Type: Multiple Choice Default value: Auto Options: [Auto, RI, LT, All] Description: Specifies the formalism for the calculation of the MP2 correlation energy. ‘LT’ means Laplace Transformed MP2 (also referred to as AO-PARI-MP2), ‘RI’ means that a conventional RI-MP2 is carried out. If ‘Auto’, LT will be used in case of DOD double hybrids and SOS MP2, and RI will be used in all other cases. ‘All’ means that both RI and LT formalisms are used in the calculation. For a RPA or GW calculation, the formalism is always LT, irrespective of the formalism specified with this key. `nTime`

Type: Integer GUI name: Number of time points Description: Number of imaginary time points (only relevant in case the Laplace Transformed (LT) formalism is used). In the many-body-perturbation theory module in ADF, the polarizability (or Kohn-Sham density response function) is evaluated in imaginary time to exploit sparsity in the AO basis. For MP2, this is often referred to as a Laplace transform. For MP2, 9 points are the default. This is a safe choice, guaranteeing accuracies higher than 1 Kj/mol for most systems (For many simple organic systems, 6 points are sufficient for good accuracy). Only for systems with a very small HOMO-LUMO gap or low-lying core states (heavy elements starting from the 4th row of the periodic table) more points might be necessary. In principle, the same considerations apply for RPA and GW as well, however, the accuracy requirements are somewhat higher and 12 point are the default for RPA. In a GW calculation, the number of points is adjusted according to the numerical quality. Using less than 9 points is strongly discouraged except for the simplest molecules. In ADF2019, it can happen that the algorithm determining the imaginary time grid does not converge. In this case, the usual reason is that the number of points is too small and more points need to be specified. Starting from AMS2020, this does not happen any more. In case the imaginary time grid does not converge, the number of points is automatically adjusted until it does. The computation time of AO-PARI-MP2, RPA, and GW scales linearly with the number of imaginary time points. `nFrequency`

Type: Integer Default value: 12 Description: Number of imaginary frequency points. This key is only relevant for RPA and GW and will be ignored if used in an AO-PARI-MP2 calculation. 12 Points is the default for a RPA calculation. It is technically possible to use a different number of imaginary frequency points than for imaginary time. The maximum number of points which can be requested for imaginary frequency integration is 42. Important note: The computation time and memory requirements roughyl scale linearly with the number of imaginary frequency points. However, memory can be an issue for RPA and GW when the number of imaginary frequency points is high. In case a job crashes, it is advised to increase the number of nodes since the necessary memory distributes over all nodes. `FitSetQuality`

Type: Multiple Choice Default value: Auto Options: [Auto, VeryBasic, Basic, Normal, Good, VeryGood] Description: Specifies the fit set to be used in the MBPT calculation. ‘Normal’ quality is generally sufficient for basis sets up to and including TZ2P. For larger basis sets (or for benchmarking purposes) a ‘VeryGood’ fit set is recommended. Note that the FitSetQuality heavily influences the computational cost of the calculation. If not specified or ‘Auto’, the RIHartreeFock%FitSetQuality is used. `IntegrationQuality`

Type: Multiple Choice Options: [VeryBasic, Basic, Normal, Good, VeryGood] Description: Specifies the integration quality to be used in the MBPT calculation. If not specified, the RIHartreeFock%IntegrationQuality is used. `ThresholdQuality`

Type: Multiple Choice Options: [VeryBasic, Basic, Normal, Good, VeryGood, Excellent] Description: Controls the distances between atomic centers for which the product of two basis functions is not fitted any more. Especially for spatially extended, large systems, ‘VERYBASIC’ and ‘BASIC’ can lead to large computational savings, but the fit is also more approximate. If not specified, the RIHartreeFock%ThresholdQuality is used. `Dependency`

Type: Bool Default value: Yes Description: If true, to improve numerical stability, almost linearly-dependent combination of basis functions are removed from the density matrices that are used in the MBPT equations. `UseScaledZORA`

Type: Bool Default value: Yes Description: If true, use the scaled ZORA orbital energies instead of the ZORA orbital energies in the MBPT equations.

References

[1] | (1, 2) A. Förster, M. Franchini, E. van Lenthe, L. Visscher, A Quadratic Pair Atomic Resolution of the Identity Based SOS-AO-MP2 Algorithm Using Slater Type Orbitals, Journal of Chemical Theory and Computation 16 875-891 (2020) |

[2] | A. Förster, L. Visscher, Double hybrid DFT calculations with Slater type orbitals, Journal of Computational Chemistry 41 1660-1684 (2020) |

[3] | A. Förster, L. Visscher, Low-order scaling |G0W0| by pair atomic density fitting, Journal of Chemical Theory and Computation 16 (12), 7381 (2020) |