adcc: Seamlessly connect your program to ADC

https://img.shields.io/github/stars/adc-connect/adcc?style=social https://github.com/adc-connect/adcc/workflows/CI/badge.svg?branch=master&event=push https://img.shields.io/pypi/v/adcc https://anaconda.org/adcc/adcc/badges/version.svg https://img.shields.io/pypi/l/adcc adcc logo

ADC-connect – or adcc in short – is a Python-based framework to connect to arbitrary programs and perform calculations based on the algebraic-diagrammatic construction approach (ADC) on top of their existing self-consistent field (SCF) procedures. Four SCF codes can be used with adcc out of the box, namely molsturm, psi4, PySCF, and veloxchem.

The range of supported algebraic-diagrammatic construction (ADC) methods includes the ADC(n) family up to level 3, including variants such as spin-flip and core-valence separation. For all methods transition and excited state properties are available. See the Performing calculations with adcc for more details. The design and details of adcc can also be found in our recent paper, see [HSF+20].

Getting a first taste

You may interactively try adcc from your browser at https://try.adc-connect.org. Alternatively keep reading for a small code snippet, which shows how to perform an ADC(3) calculation for 3 singlet excited states of water on top of a restricted Hartree-Fock reference computed with PySCF.

from matplotlib import pyplot as plt
from pyscf import gto, scf
import adcc

# Run SCF in pyscf
mol = gto.M(
    atom='O 0 0 0;'
         'H 0 0 1.795239827225189;'
         'H 1.693194615993441 0 -0.599043184453037',
    basis='cc-pvtz',
    unit="Bohr"
)
scfres = scf.RHF(mol)
scfres.conv_tol = 1e-13
scfres.kernel()

# Run an ADC(3) calculation, solving for 3 singlets
state = adcc.adc3(scfres, n_singlets=3)

# Broaden the peaks and plot the resulting spectrum
state.plot_spectrum(broadening='lorentzian')
plt.show()

Sounds interesting? See Installation and Performing calculations with adcc for installation instructions and some more information to get going or take a look at our examples folder on github for more ideas what adcc can be used for.