How to use an external AC code

You can use an external code to perform AC of the self-energy from the Matsubara frequency to the real frequency. The only thing the code needs to do is to write the self-energy in the real frequency as a NumPy binary file, post/sigma_w.npz from the Matsubara frequency self-energy stored in seedname_sigma_iw.npz.

Input file: seedname_sigma_iw.npz

seedname_sigma_iw.npz is a NumPy binary file, so you can load it with numpy.load function.

import numpy as np
npz = np.load("./seedname_sigma_iw.npz")

The returned object, npz, is a dictionary. The keys are as follows:

Key

Type

Description

beta

float

Inverse temperature

iwn

array of complex

Matsubara frequency

data#

array of complex

Self-energy of #-th inequivalent shell

hartree_fock#

array of complex

Hartree-Fock term of #-th inequivalent shell

Here, “#” is 0, 1, 2, … .

“data#” is a \(N_{i\omega} \times N_\text{orb} \times N_\text{orb}\) array, where \(N_{i\omega}\) is the number of Matsubara frequencies, and \(N_\text{orb}\) is the number of orbitals.

“hartree_fock#” is a Hartree-Fock term of “#”-th inequivalent shell, \(H^\text{f}\).

\[H^\text{f}_{ik} = \sum_{jl} U_{ijkl} \left\langle c^\dagger_j c_l \right\rangle\]

The data format is a \(N_\text{orb} \times N_\text{orb}\) array, where \(N_\text{orb}\) is the number of orbitals.

Output file: post/sigma_w.npz

The output file, post/sigma_w.npz, is also a NumPy binary file storing one dictionary with the following keys:

Key

Type

Description

omega

array of real

frequency

data#

array of complex

Self-energy of #-th inequivalent shell

Here, “#” is 0, 1, 2, … .

“data#” is a \(N_{\omega} \times N_\text{orb} \times N_\text{orb}\) array, where \(N_{\omega}\) is the number of frequencies, and \(N_\text{orb}\) is the number of orbitals.