fcdmft.gw.mol.ugw_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.ugw_cd.UGWCD(mf, frozen=None, auxbasis=None, chkfile=None)[source]#

Bases: UGWAC

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 unrestricted 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, spin, ijslicea, ijsliceb])

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.ugw_cd.get_WmnI_diag(gw, orbs, Lpqa, Lpqb, Lia_a, Lia_b, freqs)[source]#

Compute W_mn(iw) on imarginary axis grids Return:

Wmn: (s, Nmo, Norbs, Nw)

fcdmft.gw.mol.ugw_cd.get_rho_response_R(eia_a, eia_b, omega, Lia_a, Lia_b, eta)[source]#

Compute density response function in auxiliary basis at poles

fcdmft.gw.mol.ugw_cd.get_sigmaR_diag(mo_energy, omega, s, orbp, ef, Lpqa, Lpqb, Lia_a, Lia_b, eta)[source]#

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

fcdmft.gw.mol.ugw_cd.get_sigma_diag(ef, ep, s, p, mo_energy, Lpqa, Lpqb, Lia_a, Lia_b, Wmn_s, freqs, wts, eta)[source]#

Compute self-energy on real axis using contour deformation

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

UGWCD kernel.

Parameters:
gwUGWCD

instance of UGWCD 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