gw_embedding.bdft_converter
converter from bdft output to edmft input for solid_dmft
- gw_embedding.bdft_converter.calc_Sigma_DC_gw(Wloc_dlr, Gloc_dlr, Vloc, verbose=False)[source]
Calculate the double counting part of the self-energy from the screened Coulomb interaction
- Parameters:
- Wloc_dlrBlockGf or Gf with MeshDLR
screened Coulomb interaction
- Gloc_dlrBlockGf or Gf with MeshDLR
local Green’s function
- Vlocnp.ndarray
local Coulomb interaction
- verbosebool, optional
print additional information, defaults to False
- Returns:
- Sig_DC_dlrBlockGf or Gf
double counting part of the self-energy
- Sig_DC_hartreenp.ndarray
static Hartree part of the self-energy
- Sig_DC_exchangenp.ndarray
static exchange part of the self-energy
- gw_embedding.bdft_converter.calc_W_from_Gloc(Gloc_dlr, U)[source]
Calculate Wijkl from given constant U tensor and Gf on DLRMesh triqs notation for Uijkl:
phi*_i(r) phi*_j(r’) U(r,r’) phi_l’(r’) phi_k(r) = Uijkl c^+_i c^+_j’ c_l’ c_k
where the ‘ denotes a spin index different from the other without ‘
the according diagram is (left and right have same spin):
j (phi) k' (phi) \ / < < \__________/ / \ > > / \ i (phi*) l'
we now have to move to a product basis form to combine two indices i.e. go from nb,nb,nb,nb to nb**2,nb**2 tensors:
Uji,kl = phi*_i(r) phi_j(r) U(r,r') phi*_k(r') phi_l(r') = Psi*_ji(r) U(r,r') Psi_kl(r')
So we have to transform the triqs notation of Uijkl -> Uki,jl, i.e. swap col/rows as (2,0,1,3) to go to the basis and the in the end swap W_ki,jl back in reverse.
Then we compute pubble polarizability as
Pi_ab,kl(tau) = -2 G_bl(tau) G_ka(beta - tau)
So that:
[ U Pi(iwn) ]_ji,kl = sum_ab U_ji,ab Pi_ab,kl(iwn)
i.e.:
j' a ___ \ / \ k < < \ \__________/ \ / \ / > > / / \___/ l i' b
then the screened Coulomb interaction in product basis is:
W_ji,kl(iwn) = [1 - U Pi(iwn) ]^-1_ji,kl Uji,kl - Uji,kl
(subtract static shift here), and finally convert back to triqs notation.
- Parameters:
- Gloc_dlrBlockGf or Gf with MeshDLR
local Green’s function
- Unp.ndarray of with shape [Gloc_dlr.target_shape]*4 or dict of np.ndarray
constant U tensor
- Returns:
- W_dlrBlockGf or Gf
screened Coulomb interaction
- gw_embedding.bdft_converter.convert_gw_output(job_h5, gw_h5, dlr_wmax=None, dlr_eps=None, it_1e=0, it_2e=0, delta_calc_type='tail_fit', delta_bath_fit=False, ha_ev_conv=False)[source]
read bdft output and convert to triqs Gf DLR objects
- Parameters:
- job_h5: string
path to solid_dmft job file
- gw_h5: string
path to GW checkpoint file for AIMBES code
- dlr_wmax: float
wmax for dlr mesh, defaults to the wmax from the IR basis
- dlr_eps: float
precision for dlr mesh, defaults to the precision from the IR basis
- it_1e: int, optional
iteration to read from gw_h5 calculation for 1e downfolding, defaults to last iteration
- it_2e: int, optional
iteration to read from gw_h5 calculation for 2e downfolding, defaults to last iteration
- ha_ev_conv: bool, optional
convert energies from Hartree to eV, defaults to False
- Returns:
- gw_data: dict
dictionary holding all read objects: mu_emb, beta, lam, w_max, prec, mesh_dlr_iw_b, mesh_dlr_iw_f, n_orb, G0_dlr, Gloc_dlr, Sigma_imp_dlr, Sigma_imp_DC_dlr, Uloc_dlr, Vloc, Hloc0, Vhf_dc, Vhf
- ir_kernel: sparse_ir kernel object
IR kernel with AIMBES paramaters