fcdmft.gw.pbc.gw_ac module#

PBC gamma-point spin-restricted G0W0 Greens function This implementation has N^4 scaling, and is faster than GW-CD (N^4) and analytic GW (N^6) methods. GW-AC is recommended for valence states only, and is inaccurate for core states.

Method:

T. Zhu and G.K.-L. Chan, J. Chem. Theory. Comput. 17, 727-741 (2021) Compute self-energy on imaginary frequency with density fitting, then analytically continued to real frequency

Other useful references:

J. Chem. Theory Comput. 12, 3623-3635 (2016) New J. Phys. 14, 053020 (2012)

class fcdmft.gw.pbc.gw_ac.GWAC(mf, frozen=None, auxbasis=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 analytical continuation.

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

ao2mo(mo_coeff=None)[source]#

Transform density-fitting integral from AO to MO.

Parameters:
mo_coeffdouble 2d array, optional

coefficient from AO to MO, by default None

Returns:
Lpqdouble 3d array

three-center density-fitting matrix in MO

get_sigma_exchange(mo_coeff)[source]#

Get exchange self-energy (EXX).

Parameters:
mo_coeffdouble 2d array

orbital coefficient

Returns:
vkdouble 2d array

exchange self-energy

initialize_df(auxbasis=None)[source]#

Initialize density fitting.

Parameters:
auxbasisstr, optional

name of auxiliary basis set, by default None

loop_ao2mo(mo_coeff=None, ijslice=None)[source]#

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

Parameters:
mo_coeffdouble 2d array, optional

coefficient from AO to MO, by default None

ijslicetuple, optional

tuples for (1st idx start, 1st idx end, 2nd idx start, 2nd idx end), by default None

Returns:
eri_3ddouble 3d array

three-center density-fitting matrix in MO in a block