GW¶
General¶
Warning
In AMS2023.102 (or bug fixed AMS2023 binary with r112249 or higher) a bug was fixed in ADF regarding GW. An incorrect Fermi energy was used. Especially important fix in case the Fermi energy is not close to zero.
This page describes the basic procedure, usage and scope of a GW calculation. Technical details of the algorithm can be tweaked in the MBPT input block. In AMS2020 G0W0 is implemented. In AMS2021 evGW and evGW0 are implemented. In AMS2022 qsGW, qsGW0, and G3W2 are implemented. In AMS2023 GW (G0W0, evGW, evGW0, qsGW, qsGW0, and G3W2) with spin-orbit coupling is implemented.
The GW method is a relatively accurate method to obtain information about so-called charged excitations, or single-particle excitations. We refer to them as Quasiparticle energies. These are especially important to interpret and predict the outcome of direct and inverse photo-emission spectroscopy and can be used to obtain e.g. very accurate ionization potentials and electron affinities which gives access to the so-called fundamental gap (not to be confused with the optical gap).
GW can be used with scalar and spin-orbit coupled relativistic effects within the ZORA
, X2C
, or RA-X2C
formalism.
In practice, fully self-consistent GW is rarely used for molecular systems. Instead, perturbative approximations, so called quasiparticle GW methods are used since they are cheaper and also more accurate than fully self-consistent GW. The most popular approach is G0W0 [1], in which quasiparticle energies are obtained as a one-shot perturbative correction to KS eigenvalues. A downside of this approach is the rather pronounced starting-point dependence. This can be overcome to a large extent in eigenvalue-only self-consistent GW (evGW), in which the quasiparticle energies (but not the density) are iteratively updated until self-consistency is reached. In quasiparticle self-consistent GW, also the density is updated in each iteration, so that the results become completely starting point independent. The partially self-consistent GW variants usually converge within 6-12 iterations which make these approaches a factor of 6 to 12 more expensive than G0W0.
A GW calculation as implemented in ADF proceeds in five steps as has been described in detail in a series of papers. [1] [5] [6] The technique is also known as the as GW space-time method. Our implementation is closely related to the scheme outlined in [4] A GW implementation in ADF for closed shell molecules that includes spin-orbit coupling is described in Ref. [14].
A DFT single-point calculation is performed. This can be an LDA, GGA or hybrid calculation. At the moment, ADF does not support the use of XCfun, but libXC is supported. Valid choices could be LDA, PBE, BLYP, PBE0, BHandHLYP and many more. The default is LDA. As usual, the functional to be used during the SCF is requested in the XC input block block. The following requests a G0W0 calculation with default settings using a PBE reference:
XC GGA PBE END GW End
From the KS orbitals and orbital energies, a Green’s function (G) is evaluated and from the Green’s function the so-called independent-particle polarizability is calculated. This is done in imaginary time.
The polarizability is Fourier transformed to the imaginary frequency axis where the screened Coulomb potential (W) is evaluated using the Coulomb potential and the polarizability.
The screened Coulomb potential is Fourier transformed to imaginary time. Here, the self-energy is calculated using G and W (that why it is called GW) which gives access to spectroscopic properties.
The self-energy is transformed to the molecular orbital basis from where it is Fourier transformed to the imaginary frequency axis from where it is analytically continued to the complex plane. Along the real frequency axis, the quasiparticle energies are evaluated.
In case of evGW (evGW0), the input KS eigenvalues are replaced by the quasiparticle energies from the previous iteration and the scheme is iterated until self-consistency in the quasiparticle energies is reached.
In case of qsGW (qsGW0), A non-local, hermitian, and static exchange-correlation potential is constructed from the self-energy. This exchange-correlation potential replaces the KS exchange-correlation potential. Diagonalization gives a new set of single-particle orbitals and quasiparticle energies. The procedure is repeated until self-consistency is reached.
By default, the DIIS algorithm is used to accelerate and stabilize convergence of the self-consistent GW schemes. A linear-mixing scheme can also be used.
The GW space-time method has the distinct advantage that it can be very fast, while a full frequency, conventional GW calculation scales to the 6th power of the system size and is prohibitive for systems larger than a few tens of atoms. ADF used advanced density fitting options to accelerate the space-time method further and in practice nearly quadratic scaling can be reached. This enables the routine application of the method to systems of several hundreds of atoms. A G0W0 calculation (without the preceding SCF) is usually not much slower than a hybrid calculation. The downside of the approach is that the analytical continuation technique produces large errors (up to several eV) for core states which are in example important in X-ray spectroscopy. Thus, the GW implementation in ADF should only be used to predict quasiparticle energies for states in the valence-region. In fact, we have only tested it for HOMO and LUMO states (which are arguably most important)
The states of interest can be requested in the GW block
GW
nStates 5
End
is the default and calculates 5 occupied and five unoccupied states.
GW
nStates 1
End
calculates the HOMO and LUMO quasiparticle energy only.
Levels of self-consistency¶
Eigenvalue-only self-consistent GW¶
An evGW calculation is requested by
GW
SelfConsistency evGW
End
One can also only iterate G by keep W fixed which reduces the cost of each iteration by roughly 50 %. This is requested by
GW
SelfConsistency evGW0
End
On the other hand, much of the starting point dependence of the G0W0 method remains in the evGW0 method and it is generally not recommended.
quasiparticle self-consistent GW¶
An qsGW calculation is requested by
GW
SelfConsistency qsGW
End
One can also only iterate G by keep W fixed which reduces the cost of each iteration by roughly 50 %. This is requested by
GW
SelfConsistency qsGW0
End
On the other hand, much of the starting point dependence of the G0W0 method remains in the qsGW0 method and it is generally not recommended.
More options:
QPHamiltonian
In quasiparticle self-consistent GW, the frequency-dependent self-energy is mapped to a static exchange-correlation in each iteration. The mapping is not unique and different schemes have been suggested. They differ in the way the frequency dependence of the self-energy is treated. In ADF, two variants can be used: KSF1 and KSF2 are both from the paper by Kotani et al. [7]. KSF1 refers to eq. 10 therein and is most commonly implemented, KSF2 refers to eq. 11 therein. KSF2 is the default in ADF since it is numerically more stable when qsGW is implemented together with the analytical continuation algorithm. In case the analytical integration algorithm is used, only KSF1 is currently supported. ADF also supports a variants denoted as LQSGW with has been suggested bu Kutepov et al. [8], It uses a first-order expansion around the chemical potential. This is also similar to the approach implemented in VASP.
FixedGrids
Per default, the imaginary frequency and imaginary time grids used in the GW calculation are updated in each iteration in a qsGW calculation since this is necessary to make the results strictly starting point dependent. This can also be turned off, and fixed grids are used throughout. This might be helpful in case of convergence problems.
Convergence¶
The self-consistency can be controlled by a few parameters: For example
GW
Converge HOMO=5e-3
End
requests that the evGW(0) calculation is considered converged if the difference between the HOMO quasiparticle energies of 2 consecutive iterations does not change by more than 5 meV. The default is 1 meV which is in practice usually a little too tight. We recommend to adjust this parameter according to your requirements, for example the experimental resolution you would like to match.
For qsGW (qsGW0), the change in the norm of the density matrix is used as an additional criterion to control convergence. In evGW (evGW0) it is ignored.
GW
Converge Density=1e-07
End
is the default. For very large systems and when QZ basis sets are used, it is recommended to decrease that value, for example to
GW
Converge Density=1e-08
End
GW
linearmixing 0.2
End
turns of DIIS and request to use linear mixing instead with a mixing parameter of 0.2. This can be useful if for some reason, convergence using DIIS cannot be achieved. However, it is usually better to adjust the number of vectors in the DIIS expansion. This is achieved by (for example)
GW
DIIS 5
End
The default are 10 expansion vectors.
Vertex corrections beyond GW¶
Starting from ADF2022 and with many additions in ADF2025, it is possible to go beyond the GW approximation for the self-energy using vertex corrections. This is possible in several ways, but not all are recommended. The algorithms and methods implemented in AMS (all of these methods can both be used with the ADF and the BAND engine) have been described in a series of publications. [10] [11] [12] [13]
The easiest way to go beyond the GW is to also calculate the next term in the self-energy, often called G3W2. For the full G3W2 term, 2 nested and slowly converging frequency integrals have to be performed. [11] However, there are possible approximations to it, for instance, the SOSEX, and 2SOSEX approximations which only require a single frequency integration. [11] It is also possible to apply a static approximation to this term which avoids frequency integrations completely. [10]
None of these variants is recommended. They are expensive, and it can be shown that they always perform worse than a reasonable GW calculation. [11] The reason for this is, that additional terms in the self-energy beyond GW should always be combined with additional terms in the polarizability. Additional self-energy terms always lower the HOMO, increase the LUMO, and therefore open the fundamental gap. Additional terms in the polarizability do the opposite. It can be shown that they largely cancel, [12] but the remaining effect improves results. This has been shown for a Hartree-Fock starting point (not recommended for G0W0, but with additional vertex corrections the performance is very good) [12] and for qsGW. [13]
ADF/BAND implements four possibilities to go beyond the simple RPA polarizability:
GW
Polarizability {RPA|G4V1|G4W1|TDHF|BSE}
End
RPA : Standard (direct ) RPA without exchange. This is the default
G4V1 : This evaluates the RPA polarizability and adds the G4V1 term. This is the next-to-leading order term beyond RPA in the bare Coulomb interaction V. [12]
G4W1 : This evaluates the RPA polarizability and adds the G4W1 term. This is the next-to-leading order term beyond RPA in the statically screened Coulomb interaction W. [12]
TDHF : Here, instead of improving the RPA polarizability order by order, one adds an infinite order correction. TDHF solves the usual TDHF linear response equations to calculate the reducible polarizability which is then used to calculate the screening. The G4V1 term is the first-order approximation to TDHF. [12]
BSE : This is the recommended option. BSE solves the usual BSE linear response equations with the statically screened exchange kernel to calculate the reducible polarizability which is then used to calculate the screening. This is also the BSE which is usually solved in the GW-BSE method The G4W1 terms is the first-order approximation to TDHF. [12]
Both BSE and TDHF have to be solved in the MO basis using analytical integration. This does not have to be specified in the input since ADF selects this automatically.
Both G4V1 and G4W1 have to be solved in the MO basis using analytical continuation. This does not have to be specified in the input since ADF selects this automatically.
These polarizability terms should always be combined with the compatible additional terms in the self-energy. [12] Compatible means, that it makes sense physically. Most of these options can be combined at will, and you will get a result. It just might not make sense.
GW
SelfEnergy {HF|G3W2dynamic|G3W2|GW|SOSEX|GWGamma|GWGammaInf|GWGammaInfDyn}
End
HF : This uses the GW code to perform a HF calculation. Not recommended.
G3W2dynamic : This is the fully G3W2 dynamical self-energy. Very expensive and bad. Not recommended. [11]
G3W2 : This is the fully statical G3W2 self-energy. Not recommended. [10]
GW : This is the default
SOSEX : This is the SOSEX approximation to G3W2. Should be combined either with the G4V1 or the TDHF polarizabilities. [11]
GWGamma : This is the GWGamma approximation to G3W2. In case the G4V1 or the TDHF polarizability is used, it defaults to SOSEX. In case the G4W1 or the BSE polarizabilities are used, it does something that looks like SOSEX, but the bare V in SOSEX is replaced by the statically screened Coulomb interaction W. This makes this option compatible with all options for the polarizability (except for the default, RPA). [12]
GWGammaInf : Similar to TDHF or BSE, it resums the additional self-energy terms beyond GW to infinite orders. This is the recommended choice whenever the TDHF or BSE polarizability is used. [12]
GWGammaInfDyn : Finally, we have an option which first performs a GWGammaInf calculation, and adds a first-order dynamical correction. This is not recommended at the moment but could be combined with a first-order dynamical correction to the polarizability. This is however not yet implemented.
In summary, we do recommend the following combinations: [12] [13]
GW
Polarizability {BSE|TDHF}
SelfEnergy GWGammaInf
End
Both options give similar results.[#ref11]_ In principle, BSE should be better, and only slightly more expensive. Both options are relatively expensive anyway since a full linear response problem has to be solved completely.
This should either be used with a Hartree-Fock starting point, or combined with a qsGW calculation. The latter will give very accurate results (possibly the best you can get), but it is expensive. You might be able to apply it to systems < 20 atoms in a TZ basis set on a standard node. Larger systems are potentially possible if on a high-memory node. Other KS starting points can be used, and this could potentially work well. But this has not been tested yet.
Embedding¶
The GW method can be combined with both the COSMO and DIM embedding methods. This coupling is only available for the G0W0 level of approximation and is highly experimental, therefore users should exercise caution in interpreting the results. The implementation is based on the work by Duchemin et al. [15] on the combination of GW with the polarizable continuum model, which we further extended to DIM method.
To add embedding effects in a GW calculation, simply include the corresponding keywords in the input file as is done for regular DFT calculations.
Recommendations¶
Basis sets¶
The recommended numerical settings depend strongly on the basis set. The recommended basis set depends on system size and the property of interest. The following are recommendations which should be seen as guidelines and not as definite. We recommend to always verify the basis set convergence of for the property of interest. Details about basis set convergence can be found in this paper [13]
Basis sets
The GW-BSE excitation energies and the screened Coulomb interaction do only depend on the QP gaps and not on their absolute values. Therefore, triple-zeta quality basis sets are typically sufficient.
For highly accurate results we recommend to perform an extrapolation to the complete basis set limit: For this, perform 2 calculations using the Corr/TZ3P and Corr/QZ6P. The basis set limit is then calculated according to
The values for \(N^{TZ}_{bas}\) and \(N^{QZ}_{bas}\) can be found in the adf.rkf file in the GW
section under the entry nBas
. Additional explanations can be found in the references [3] and [13]. Alternatively, this basis set extrapolation can be performed with the BAND code and the Dunning basis sets cc-pVTZ and cc-pVQZ.
Numerical aspects¶
According to the choice of basis set, the recommended numerical settings can differ. For a discussion, see the MBPT page.
qsGW has the highest requirements on the numerical parameters than evGW and G0W0. Usually, it is necessary to use a larger value in the
Dependency
key, see the MBPT page. Note that starting from AMS2022 ADF will use aDependency bas=5e-3
andRIHartreeFock DependencyThreshold=5e-3
in case of (any variant of) GW. One can override these values in the input.The implemented GW algorithm is very sensitive to numerical noise and depending on the numerical settings and/or the underlying exchange-correlation functional, (occupied) quasiparticle energies from partially self-consistent GW calculations performed on different hardware can differ by a few meV. The discrepancies are generally more pronounced for core states for which the analytical continuation technique is not applicable. Here, the analytical integration algorithm should be used.
In our experience, these differences only occur with large basis sets (QZ4P or larger) and when Minnesota functionals (we tested M06, M06-2X and M06-HF) are used to calculate the KS reference. When the DIIS algorithm is used to converge the quasiparticle energies, the number of iterations needed for convergence can then differ as well.
The analytical integration solution of GW is numerically more stable since there are not problems due to frequency integration, analytical continuation or time-to-frequency Fourier transforms.
If the RI formalism is used, one avoids time-to-frequency Fourier transforms. This can sometimes help in case of unexpected results with the analytical continuation based algorithm.
Choosing the KS reference¶
As for ground-state properties, it is far from trivial to recommend a universal functional. However, for G0W0 calculations, a few general guidelines can be offered. A good discussion is found in [2]. It should be noted, that GGA functional should not be used, even though a PBE starting point is a popular choice. We rather recommend to use a hybrid functional. The relevant parameter in the choice of the hybrid is usually the fraction of exact exchange. In our experience, PBE0 with 40-50 % exact exchange is a good choice. You might also use a range-separated hybrid via LibXC, for example LRC-wPBEH.
If in doubt, one of the partially self-consistent schemes should be used. evGW is almost starting point independent and qsGW is completely starting point independent. Therefore, for qsGW, it is in principle irrelevant what starting point is chosen. Convergence properties can in principle be affected, although the number of iterations until convergence is reached is also more or less independent of the starting point [6]. Also for evGW, starting from a hybrid functional or a range-separated functional usually results in the highest accuracy.
A Hartree-Fock starting point can be used in G0W0, but in that case a vertex correction should be applied. See above.
GW key¶
GW
nStates integer
Polarizability [RPA | BSE | G4W1 | G4V1 | TDHF]
SelfEnergy [HF | GW | G3W2 | SOSEX | GWGamma | G3W2dynamic | GWGammaInf | GWGammaInfDyn]
SelfConsistency [G0W0 | EVGW0 | EVGW | QSGW0 | QSGW]
QPHamiltonian [KSF1 | KSF2 | SRG | LQSGW]
AnalyticalIntegration
Enabled Yes/No
SpectralFunctionResolution integer
TDA Yes/No
eta float
End
nIterations integer_list
Converge
Density float_list
HOMO float
End
LinearMixing float_list
AdaptiveMixing float_list
DIIS integer
LinearizeQPequations Yes/No
ScissorShift Yes/No
End
GW
- Type:
Block
- Description:
Perform a GW calculation. G0W0 is the default for GW%SelfConsistency.
nStates
- Type:
Integer
- Default value:
5
- GUI name:
N states
- Description:
Number of Quasiparticle States to be printed to output. The default is 5 states which in this case means that min(5, Number of particle states) occupied and min(5, Number of hole states) hole states are printed. The whole list of states can be printed by setting this parameter to -1’
Polarizability
- Type:
Multiple Choice
- Default value:
RPA
- Options:
[RPA, BSE, G4W1, G4V1, TDHF]
- Description:
Sets the expression for the Polarizability used in the GW calculation. RPA is the Default and amounts to a standard GW calculation. BSE denotes screening in the Bethe-Salpeter-equation formalism.
SelfEnergy
- Type:
Multiple Choice
- Default value:
GW
- Options:
[HF, GW, G3W2, SOSEX, GWGamma, G3W2dynamic, GWGammaInf, GWGammaInfDyn]
- Description:
Controls the form of the self-energy. GW is the default and corresponds to the standard GW calculation. G3W2 is a GW calculation plus a perturbative second-order statically screened exchange correction (second order expansion in the self-energy). Note, that there the self-energy is always static.
SelfConsistency
- Type:
Multiple Choice
- Default value:
G0W0
- Options:
[G0W0, EVGW0, EVGW, QSGW0, QSGW]
- Description:
Sets the level of self-consistency in a GW calculation. G0W0 calculates a one-shot, perturbative correction to the KS eigenvalues. In evGW and evGW0, the quasi-particle energies are updated until self-consistency is reached. evGW0 requests that the Green’s function is evaluated self-consistently but not the screened interaction. In qsGW, the density is updated as well, however, the self-energy is mapped to a static effective potential and the Dyson equation is solved by diagonalization instead of inversion. The results of a qsGW are independent of the choice of the underlying exchange-correlation functional and are usually the most accurate ones. The same is done in qsGW0, but the screened interaction is not updated.
QPHamiltonian
- Type:
Multiple Choice
- Default value:
KSF2
- Options:
[KSF1, KSF2, SRG, LQSGW]
- Description:
The quasi-particle Hamiltonian can be constructed in different ways. KSF1 refers to the original construction by Kotani, Van Schilfgaarde anf Faleev (KSF) which is also implemented in TURBOMOLE. KSF2 refers to an alternative construction by KSF. KSF1 is not recommended since it is numerically less stable than KSF2 in case analytical continuation is used (the default). In case the analytical integration algorithm is used, only KSF1 is implemented. Therefore, make sure that KSF1 is specified. The results are typically very similar. The QP energies at which the matrix elements are evaluated can be tweaked further, see the two subsequent keys: However, KSF2 is recommended since it typically leads to QP energies with the best agreement with experiment. Ignored when not a quasi-particle self-consistent GW calculation is performed
AnalyticalIntegration
- Type:
Block
- Description:
Use analytical integration to calculate the self-energy. Very slow, unless the system is very small but useful to check the accuracy of the frequency integration
Enabled
- Type:
Bool
- Default value:
No
- GUI name:
analytical integration
- Description:
Enable the calculation of the GW quasi-particle energies via analytical integration.
SpectralFunctionResolution
- Type:
Integer
- Default value:
800
- Description:
Number of points at which spectral function is evaluated.
TDA
- Type:
Bool
- Default value:
No
- Description:
Solve the linear response equations in the Tamm-Dancoff approximation.
eta
- Type:
Float
- Default value:
0.001
- Description:
Artificial (positive) broadening parameter for evaluation of self-energy in analytical integration. Ideally should be as small as possible but this might lead to convergence issues in partially self-consistent approaches. In this case, a value of up to 0.1 is possible.
nIterations
- Type:
Integer List
- Default value:
[10]
- GUI name:
Number of iterations
- Description:
The maximum number of iterations within the (partially or fully) self-consistent GW calculation has to converge. Ignored when Formalism is set to G0W0
Converge
- Type:
Block
- Description:
Sets convergence criteria for the GW calculation in self-consistent case
Density
- Type:
Float List
- Default value:
[1e-08, 1e-05]
- Description:
First Criterion for self-consistency procedure to terminate. Criterion is the trace of the density matrix. Ignored in non-selfconsistent Calculation and in eigenvalue self-consistent GW It is possible to run a qsGW calculation with an inner SCF loop which updates the static part of the elf-energy only. This can be useful to accelerate the convergence in case linear mixing is used. It is not recommended to use linear mixing, so it is also not recommended to use that inner loop as well. The second number in this list specifies the convergence criterion for the inner SCF loop.
HOMO
- Type:
Float
- Default value:
0.003
- Unit:
eV
- GUI name:
HOMO energy convergence
- Description:
Criterion for self-consistency procedure to terminate. The self-consistent GW calculation terminates, when the difference between the HOMO QP energies between 2 consecutive iterations is below this number. The LUMO energy converged faster than the HOMO energy so when the HOMO energy is converged according to this criterion, the LUMO energy will be converged as well. In non-selfconsistent Calculation, this criterion is ignored.
LinearMixing
- Type:
Float List
- Description:
Requests to use linear mixing instead of DIIS and sets the mixing parameter for linear mixing of Green’s function in case of self-consistency. It is ignored in non-selfconsistent calculation and overwritten by DIIS when DIIS is also present.
AdaptiveMixing
- Type:
Float List
- Description:
Requests to use adaptive mixing instead of DIIS and sets the staring mixing parameter for mixing of Green’s function in case of self-consistency. Adapative mixing is recommended in case a qsGW calculation does not converge with DIIS. It is ignored in non-selfconsistent calculation and overwritten by DIIS when DIIS is also present.
DIIS
- Type:
Integer
- Default value:
10
- Description:
Requests to use DIIS. This is the Default. Number of expansion coefficients can be requested as well. Ignored in non-selfconsistent calculation
LinearizeQPequations
- Type:
Bool
- Default value:
No
- Description:
Instead of solving the non-linear QP equations in a G0W0 (or evGW calculation) by bisection exacly, linearize them by first-order Taylor expansion. This is not recommended since it does not save computational time when used together with analytical continuation (as implemented in AMS). It might however be useful for benchmarking or for validating results. If the results os the linearization differ by a lot (for instance, more than 0.1 eV in frontier QP energies) from the non-linearized results, this might indicate that the GW calculation is not reliable.
ScissorShift
- Type:
Bool
- Default value:
No
- Description:
Only calculate the HOMO and LUMO QP energies and shift the remaining QP energies by the same amount. This is a rather crude approximation and not recommended. It might again be useful for benchmarking purposes.
References