fcdmft.gw.mol.gw_cd module#

Spin-restricted G0W0 approximation with contour deformation

This implementation has the same scaling (N^4) as GW-AC, more robust but slower. GW-CD is particularly recommended for accurate core and high-energy states.

Method:

See T. Zhu and G.K.-L. Chan, arxiv:2007.03148 (2020) for details Compute Sigma directly on real axis with density fitting through a contour deformation method

Useful References:
  1. Chem. Theory Comput. 14, 4856-4869 (2018)

class fcdmft.gw.mol.gw_cd.GWCD(mf, frozen=None, auxbasis=None, chkfile=None)[source]#

Bases: GWAC

Attributes:
nmo
nocc

Methods

__call__(*args, **kwargs)

Update the attributes of the current object.

ao2mo([mo_coeff])

Transform density-fitting integral from AO to MO.

apply(fn, *args, **kwargs)

Apply the fn to rest arguments: return fn(*args, **kwargs). The return value of method set is the object itself. This allows a series of functions/methods to be executed in pipe.

check_sanity()

Check input of class/object attributes, check whether a class method is overwritten.

copy()

Returns a shallow copy

energy_tot()

Compute GW total energy according to Galitskii-Migdal formula.

get_ef([mo_energy])

Get Fermi level.

get_frozen_mask()

Get boolean mask for the restricted reference orbitals.

get_sigma_exchange(mo_coeff)

Get exchange self-energy (EXX).

initialize_df([auxbasis])

Initialize density fitting.

kernel()

Do one-shot GW calculation using contour deformation.

loop_ao2mo([mo_coeff, ijslice])

Transform density-fitting integral from AO to MO by block.

make_gf(omega[, eta, mode])

Get G0W0 Green's function by AC fitting.

make_rdm1([ao_repr, mode])

Get GW density matrix from G(it=0).

post_kernel(envs)

A hook to be run after the main body of the kernel function.

pre_kernel(envs)

A hook to be run before the main body of kernel function is executed.

run(*args, **kwargs)

Call the kernel function of current object.

set(*args, **kwargs)

Update the attributes of the current object.

setup_evaluation_grid([fallback_freqs, ...])

Set up self-energy grid, aka freqs2, aka gw.freqs.

view(cls)

New view of object with the same attributes.

dump_flags

get_nmo

get_nocc

kernel()[source]#

Do one-shot GW calculation using contour deformation.

fcdmft.gw.mol.gw_cd.get_WmnI_diag(gw, orbs, Lpq, Lia, quad_freqs, mo_energy)[source]#

Calculate Wmn on imaginary axis.

Parameters:
gwGWCD

GWCD object

orbslist

list of orbital indexes

Lpqdouble 3d array

three-center density-fitting matrix in MO space

Liadouble 3d array

three-center density-fitting matrix in MO space, O-V block

quad_freqsdouble 1d array

position of imaginary frequency grids used for integration

mo_energydouble 1d array

MO energies

Returns:
complex 3d array

Wmn on imaginary axis, shape (nw, norbs, nmo)

fcdmft.gw.mol.gw_cd.get_rho_response_R(eia, omega, Lia, eta)[source]#

Compute density response function in auxiliary basis at poles

fcdmft.gw.mol.gw_cd.get_sigmaR_diag(mo_energy, omega, orbp, ef, Lpq, Lia, eta)[source]#

Compute self-energy for poles inside contour (more and more expensive away from Fermi surface)

fcdmft.gw.mol.gw_cd.get_sigma_diag(ef, ep, p, mo_energy, Lpq, Lia, Wmn, freqs, wts, eta)[source]#

Compute self-energy on real axis using contour deformation

fcdmft.gw.mol.gw_cd.kernel(gw, load_chk=None)[source]#

GWCD kernel.

Parameters:
gwGWCD

instance of GWCD class

load_chkstr, optional

name of chkfile to load

Returns:
tuple(bool, ndarray, ndarray)
convbool

True if converged

conv_indsndarray

conv_inds[p] = 1 if quasiparticle energy for orbital p is converged

mo_energyndarray

quasiparticle energies