Modules: adc

## Introduction¶

The algebraic diagrammatic construction theory (ADC(n)) is a post-Hartree-Fock method used for computing correlated excited states of molecules. [1][2] The ADC methods involve a perturbative expansion of a propagator followed by truncation at a certain order $$n$$ that defines the ADC(n) approximation. Depending upon the property being investigated, propagators can be of different types. Some common examples include the polarization propagator for neutral electronic excitations, the one-particle Green’s function for charged excitations, and the two-electron propagator for Auger electron spectroscopy. The different propagators lead to different variants of the ADC method.

A simple ADC(n) computation involves the calculation of the ground-state energy and wavefunction that correspond to those of the $$n$$-th order Møller–Plesset perturbation theory (MPn), followed by the evaluation of the ADC(n) excitation energies (e.g., IP or EA) and the corresponding transition probabilities.

An example of IP and EA computation using the default ADC method (ADC(2)) is shown below:

from pyscf import gto, scf, adc
mol = gto.M(atom='H 0 0 0; F 0 0 1', basis='ccpvdz')
mf = scf.RHF(mol).run()


In the example shown above, the ground state calculation is performed by running the function kernel_gs(), whereas the excited state calculations are carried out using the ip_adc() and ea_adc() functions.

Alternatively, both the ground and excited state calculations can be run together using the kernel() function:

from pyscf import gto, scf, adc
mol = gto.M(atom='H 0 0 0; F 0 0 1', basis='ccpvdz')
mf = scf.RHF(mol).run()


By default, the kernel() function performs a IP-ADC(2) calculation. One can specify the type of charged excitation and order of the desired ADC computation:

myadc.method = "adc(3)"


The ADC functions return the nroots lowest-energy eigenvalues. The default value of nroots is set to 1. More roots can be requested using:

myadc.kernel(nroots=3)


## Spin-restricted and spin-unrestricted calculations¶

The adc module can be used to perform calculations of IP’s and EA’s of closed- and open-shell molecules starting with the RHF and UHF reference wavefunctions, leading to the RADC(n) and UADC(n) methods, respectively. [5] See Self-consistent field (SCF) methods to learn more about the different reference wavefunctions.

Shown below is an example of the IP- and EA-UADC(2) calculations for the open-shell OH radical:

from pyscf import gto, scf, adc
mol = gto.M(atom='O 0 0 0; H 0 0 1', basis='aug-cc-pvdz')
mol.spin  = 1
mf = scf.UHF(mol).run()



More examples can be found in examples/adc/ 02-open_shell.py, examples/adc/04-open_shell_different_setup.py.

## Spectroscopic properties¶

The adc module supports calculation of the spectroscopic factors, which provide information about probabilities of transitions in the photoelectron spectra. [5] Computation of spectroscopic factors is performed by default and can be switched off by setting compute_properties = False

myadc.compute_properties = False


After the ADC calculation is performed, the adc module can be used to compute the Dyson orbitals [6] corresponding to ionized and electron-attached states:

dyson_orb = myadc.compute_dyson_mo()


## Analysis of spectroscopic properties¶

The adc module allows to perform the analysis of the ADC(n) eigenvectors, that can be useful for characterizing the nature of electronic transitions. When compute_properties is set to True, this analysis will also display the largest contributions to the spectroscopic factors. The analysis of the ADC(n) eigenvectors and spectroscopic factors can be invoked using the analyze() function:

myadc.kernel(nroots = 3)


## Algorithms and job control¶

The capabilities of the adc module at present are summarized in in the following table:

 Method Reference Spin-adaptation Properties ADC(2) RHF, UHF Yes IP, EA, spectroscopic factors, Dyson orb ADC(2)-X RHF, UHF Yes IP, EA, spectroscopic factors, Dyson orb ADC(3) RHF, UHF Yes IP, EA, spectroscopic factors, Dyson orb

The ADC(n) calculations can be performed using different algorithms, depending on the available memory controlled by the max_memory keyword:

• In-core

All tensors such as two-electron integrals and amplitudes are stored in memory. This is the default algorithm used when sufficient memory is available.

• Out-of-core

Use of disk to store the expensive tensors. This algorithm is invoked by setting max_memory to a small value. See examples/adc/05-outcore.py

• Density-fitted (DF) algorithm

The memory and disk usage can be greatly reduced by approximating the two-electron integrals with density-fitting. A simple example of a DF-ADC(2) calculation is:

from pyscf import gto, scf, adc, df
mol = gto.M(atom='H 0 0 0; F 0 0 1', basis='ccpvdz')

mf = scf.RHF(mol).density_fit('ccpvdz-jkfit').run()
`

## References¶

1

J. Schirmer, L. S. Cederbaum, and O. Walter. New approach to the one-particle Green’s function for finite Fermi systems. Phys. Rev. A, 28(3):1237–1259, 1983.

2

J. Schirmer, A. B. Trofimov, and G. Stelter. A non-Dyson third-order approximation scheme for the electron propagator. J. Chem. Phys., 109(12):4734, 1998. doi:10.1063/1.477085.

3

A. B. Trofimov and J. Schirmer. Molecular ionization energies and ground- and ionic-state properties using a non-Dyson electron propagator approach. J. Chem. Phys., 123(14):144115, October 2005. doi:10.1063/1.2047550.

4

S. Banerjee and A. Yu. Sokolov. Third-order algebraic diagrammatic construction theory for electron attachment and ionization energies: Conventional and Green’s function implementation. J. Chem. Phys., 151(22):224112, December 2019. doi:10.1063/1.5131771.

5(1,2)

S. Banerjee and A. Yu. Sokolov. Efficient implementation of the single-reference algebraic diagrammatic construction theory for charged excitations: Applications to the TEMPO radical and DNA base pairs. J. Chem. Phys., 154(7):074105, January 2021. doi:10.1063/5.0040317.

6

C. M. Oana and A. I. Krylov. Dyson orbitals for ionization from the ground and electronically excited states within equation-of-motion coupled-cluster formalism: Theory, implementation, and examples. J. Chem. Phys., 127(23):234106, December 2007. doi:10.1063/1.2805393.