dmft_tools.solvers.hubbardI_interface.HubbardIInterface

class dmft_tools.solvers.hubbardI_interface.HubbardIInterface(general_params, solver_params, sum_k, icrsh, h_int, iteration_offset, deg_orbs_ftps, gw_params=None, advanced_params=None)[source]

Bases: AbstractDMFTSolver

__init__(general_params, solver_params, sum_k, icrsh, h_int, iteration_offset, deg_orbs_ftps, gw_params=None, advanced_params=None)[source]
static _crm_dyson_solver(G0_dlr_iw, G_dlr, Sigma_moments, deg_shells)

Self-energy of every block from the CRM Dyson solver

Each degenerate shell is minimized once, for its first block, and the result is copied to the other blocks of the shell. Blocks that are in no degenerate shell are minimized individually.

Parameters:
G0_dlr_iwBlockGf on MeshDLRImFreq

non-interacting impurity Green’s function

G_dlrBlockGf on MeshDLR

interacting impurity Green’s function

Sigma_momentsdict of np.ndarray

high-frequency moments of Sigma per block, [Sigma_0, (Sigma_1)]

deg_shellslist

degenerate shells of block names, i.e. sum_k.deg_shells[ish]

Returns:
Sigma_dlrBlockGf on MeshDLRImFreq

self-energy without the constant Sigma_moments[block][0]

static _fit_tail_window(Sigma_iw, fit_min_n=None, fit_max_n=None, fit_min_w=None, fit_max_w=None, fit_max_moment=None, fit_known_moments=None)

Fit a high frequency 1/(iw)^n expansion of Sigma_iw and replace the high frequency part with the fitted high frequency expansion.

Either give frequency window to fit on in terms of matsubara frequencies index (fit_min_n/fit_max_n) or value (fit_min_w/fit_max_w).

Parameters:
Sigma_iwGf

Self-energy.

fit_min_nint, optional, default=int(0.8*len(Sigma_iw.mesh))

Matsubara frequency index from which tail fitting should start.

fit_max_nint, optional, default=int(len(Sigma_iw.mesh))

Matsubara frequency index at which tail fitting should end.

fit_min_wfloat, optional

Matsubara frequency from which tail fitting should start.

fit_max_wfloat, optional

Matsubara frequency at which tail fitting should end.

fit_max_momentint, optional

Highest moment to fit in the tail of Sigma_iw.

fit_known_momentsndarray.shape[order, Sigma_iw[0].target_shape], optional, default = None

Known moments of Sigma_iw, given as an numpy ndarray

Returns:
tail_barrdict of arr

fitted tail of Sigma_iw

static _gf_fit_tail_fraction(Gf, fraction=0.4, replace=None, known_moments=[])

fits the tail of Gf object by making a polynomial fit of the Gf on the given fraction of the Gf mesh and replacing that part of the Gf by the fit

0.4 fits the last 40% of the Gf and replaces the part with the tail

Parameters:
GfBlockGf (Green’s function) object
fraction: float, optional default 0.4

fraction of the Gf to fit

replace: float, optional default fraction

fraction of the Gf to replace

known_moments: np.array

known moments as numpy array

Returns
——-
Gf_fitBlockGf (Green’s function) object

fitted Gf

_init_ImFreq_objects()

Initialize all ImFreq objects

_init_ReFreq_hubbardI()[source]

Initialize all ReFreq objects

_init_ReFreq_objects()

Initialize all ReFreq objects

postprocess()[source]

Organize G_freq, G_time, Sigma_freq and G_l from hubbardI solver

solve(**kwargs)[source]

Solve the DMFT impurity problem

__init__(general_params, solver_params, ...)

postprocess()

Organize G_freq, G_time, Sigma_freq and G_l from hubbardI solver

solve(**kwargs)

Solve the DMFT impurity problem