Previous topic

GfTools’ Reference

Next topic

GfTools.matrix

This Page

GfTools

The main module contains a collection of different Green’s functions.

API

Collection of commonly used Green’s functions and utilities.

So far mainly contains Bethe Green’s functions. Main purpose is to have a tested base.

Subpackages

matrix — Work with Green’s functions in matrix form, mainly for r-DMFT
class gftools.Result(x, err)
err

Alias for field number 1

x

Alias for field number 0

gftools.bethe_dos(eps, half_bandwidth)[source]

DOS of non-interacting Bethe lattice for infinite coordination number.

Parameters:
  • eps (array(float), float) – DOS is evaluated at points eps.
  • half_bandwidth (float) – Half-bandwidth of the DOS, DOS(| eps | > half_bandwidth) = 0. The half_bandwidth corresponds to the nearest neighbor hopping t=D/2
Returns:

result – The value of the DOS.

Return type:

array(float), float

gftools.bethe_gf_omega(z, half_bandwidth)[source]

Local Green’s function of Bethe lattice for infinite Coordination number.

Parameters:
  • z (array(complex), complex) – Green’s function is evaluated at complex frequency z
  • half_bandwidth (float) – half-bandwidth of the DOS of the Bethe lattice The half_bandwidth corresponds to the nearest neighbor hopping t=D/2
Returns:

  • bethe_gf_omega (array(complex), complex) – Value of the Green’s function
  • TODO (source)

gftools.bethe_hilbert_transfrom(xi, half_bandwidth)[source]

Hilbert transform of non-interacting DOS of the Bethe lattice.

FIXME: the lattice Hilbert transform is the same as the non-interacting
Green’s function.

The Hilbert transform

\[\tilde{D}(ξ) = ∫_{-∞}^{∞}dϵ \frac{DOS(ϵ)}{ξ − ϵ}\]

takes for Bethe lattice in the limit of infinite coordination number the explicit form

\[\tilde{D}(ξ) = 2*(ξ - s\sqrt{ξ^2 - D^2})/D^2\]

with \(s=sgn[ℑ{ξ}]\). See Georges et al.

Parameters:
  • xi (array(complex), complex) – Point at which the Hilbert transform is evaluated
  • half_bandwidth (float) – half-bandwidth of the DOS of the Bethe lattice
Returns:

bethe_hilbert_transfrom – Hilbert transform of xi.

Return type:

array(complex), complex

Note

Relation between nearest neighbor hopping t and half-bandwidth D

\[2t = D\]
gftools.bethe_surface_gf(z, eps, hopping_nn)[source]

Surface Green’s function for stacked layers of Bethe lattices.

\[\left(1 - \sqrt{1 - 4 t^2 g_{00}^2}\right)/(2 t^2 g_{00})\]

with \(g_{00} = (z-ϵ)^{-1}\)

TODO: source

Parameters:
  • z (complex) – Green’s function is evaluated at complex frequency z.
  • eps (float) – Eigenenergy (dispersion) for which the Green’s function is evaluated.
  • hopping_nn (float) – Nearest neighbor hopping t between neighboring layers.
Returns:

bethe_surface_gf – Value of the surface Green’s function

Return type:

complex

gftools.density(gf_iw, potential, beta, return_err=True, matrix=False)[source]

Calculate the number density of the Green’s function gf_iw at finite temperature beta.

As Green’s functions decay only as \(1/ω\), the known part of the form \(1/(iω_n + μ - ϵ - ℜΣ_{\text{static}})\) will be calculated analytically. \(Σ_{\text{static}}\) is the ω-independent mean-field part of the self-energy.

Parameters:
  • gf_iw (array(complex)) – The Matsubara frequency Green’s function for positive frequencies \(iω_n\). The last axis corresponds to the Matsubara frequencies.
  • potential (float, array(float)) – The static potential for the large-ω behavior of the Green’s function. It is the real constant \(μ - ϵ - ℜΣ_{\text{static}}\). The shape must agree with gf_iw without the last axis. If matrix, then potential needs to be a (N, N) matrix. It is the negative of the Hamiltonian matrix and thus needs to be hermitian.
  • beta (float) – The inverse temperature beta = 1/T.
  • return_err (bool or float, optional) – If True (default), the error estimate will be returned along with the density. If return_err is a float, a warning will Warning will be issued if the error estimate is larger than return_err. If False, no error estimate is calculated. See density_error for description of the error estimate.
Returns:

  • x (float) – The number density of the given Green’s function gf_iw.
  • err (float) – An estimate for the density error. Only returned if return_err is True.

Notes

The number density can be obtained from the Matsubara frequency Green’s function using

\[⟨n⟩ = \lim_{ϵ↗0} G(τ=-ϵ) = 1/β ∑_{n=-∞}^{∞} G(iω_n)\]

As Green’s functions decay only as \(O(1/ω)\), truncation of the summation yields a non-vanishing contribution of the tail. For the analytic structure of the Green’s function see [2], [3]. To take this into consideration the known part of the form \(1/(iω_n + μ - ϵ - ℜΣ_{\text{static}})\) will be calculated analytically. This yields [1]

\[\begin{split}⟨n⟩ = 1/β ∑_{n=-∞}^{∞} [G(iω_n) - 1/(iω_n + μ - ϵ - ℜΣ_{\text{static}})] \\ + 1/2 + 1/2 \tanh[1/2 β(μ - ϵ - ℜΣ_{\text{static}})].\end{split}\]

We can use the symmetry \(G(z*) = G^*(z)\) do reduce the sum only over positive Matsubara frequencies

\[\begin{split}∑_{n=-∞}^{∞} G(iω_n) &= ∑_{n=-∞}^{-1} G(iω_n) + ∑_{n=0}^{n=∞} G(iω_n) \\ &= ∑_{n=0}^{∞} [G(-iω_n) + G(iω_n)] \\ &= 2 ∑_{n=0}^{∞} ℜG(iω_n).\end{split}\]

Thus we get the final expression

\[\begin{split}⟨n⟩ = 2/β ∑_{n≥0} ℜ[G(iω_n) - 1/(iω_n + μ - ϵ - ℜΣ_{\text{static}})] \\ + 1/2 + 1/2 \tanh[1/2 β(μ - ϵ - ℜΣ_{\text{static}})].\end{split}\]

References

[1]Hale, S. T. F., and J. K. Freericks. “Many-Body Effects on the Capacitance of Multilayers Made from Strongly Correlated Materials.” Physical Review B 85, no. 20 (May 24, 2012). https://doi.org/10.1103/PhysRevB.85.205444.
[2]Eder, Robert. “Introduction to the Hubbard Mode.” In The Physics of Correlated Insulators, Metals and Superconductors, edited by Eva Pavarini, Erik Koch, Richard Scalettar, and Richard Martin. Schriften Des Forschungszentrums Jülich Reihe Modeling and Simulation 7. Jülich: Forschungszentrum Jülich, 2017. https://www.cond-mat.de/events/correl17/manuscripts/eder.pdf.
[3]Luttinger, J. M. “Analytic Properties of Single-Particle Propagators for Many-Fermion Systems.” Physical Review 121, no. 4 (February 15, 1961): 942–49. https://doi.org/10.1103/PhysRev.121.942.
gftools.density_error(delta_gf_iw, iw_n)[source]

Return an estimate for the upper bound of the error in the density.

This estimate is based on the integral test. The crucial assumption is, that ω_N is large enough, such that \(ΔG ∼ 1/ω_n^2\) for all larger \(n\). If this criteria is not met, the error estimate is unreasonable and can not be trusted. If the error is of the same magnitude as the density itself, the behavior of the variable factor should be checked.

Parameters:
  • delta_gf_iw ((.., N) ndarray) – The difference between the Green’s function \(Δ G(iω_n)\) and the non-interacting high-frequency estimate. Only it’s real part is needed.
  • iw_n – The Matsubara frequencies corresponding to delta_gf_iw.
Returns:

estimate – The estimate of the upper bound of the error. Reliable only for large enough Matsubara frequencies.

Return type:

float

gftools.fermi_fct(eps, beta)[source]

Return the Fermi function \(1/(\exp(βz)+1)\).

Parameters:
  • eps (float or ndarray(float)) – The energy at which the Fermi function is evaluated.
  • beta (float) – The inverse temperature \(beta = 1/k_B T\).
Returns:

fermi_fct – The Fermi function.

Return type:

float or ndarray(float)

gftools.hubbard_dimer_gf_omega(z, hopping, interaction, kind='+')[source]

Green’s function for the two site Hubbard model on a dimer.

The Hamilton is given

\[H = -t∑_{σ}(c^†_{1σ} c_{2σ} + c^†_{2σ} c_{1σ}) + U∑_i n_{i↑} n_{i↓}\]

with the hopping \(t\) and the interaction \(U\). The Green’s function is given for the operators \(c_{±σ} = 1/√2 (c_{1σ} ± c_{2σ})\), where \(±\) is given by kind

Parameters:
  • z (array(complex), complex) – Green’s function is evaluated at complex frequency z
  • hopping (float) – The hopping parameter between the sites of the dimer.
  • interaction (float) – The Hubbard interaction strength for the on-site interaction.
  • kind ({'+', '-'}) – The operator for which the Green’s function is calculated.
Returns:

gf_omega – Value of the Hubbard dimer Green’s function at frequencies z.

Return type:

array(complex)

Notes

The solution is obtained by exact digitalization and shown in [4].

References

[4]Eder, Robert. “Introduction to the Hubbard Mode.” In The Physics of Correlated Insulators, Metals and Superconductors, edited by Eva Pavarini, Erik Koch, Richard Scalettar, and Richard Martin. Schriften Des Forschungszentrums Jülich Reihe Modeling and Simulation 7. Jülich: Forschungszentrum Jülich, 2017. https://www.cond-mat.de/events/correl17/manuscripts/eder.pdf.
gftools.matsubara_frequencies(n_points, beta)[source]

Return fermionic Matsubara frequencies \(iω_n\) for the points n_points.

Parameters:
  • n_points (array(int)) – Points for which the Matsubara frequencies \(iω_n\) are returned.
  • beta (float) – Inverse temperature beta = 1/T
Returns:

matsubara_frequencies – Array of the imaginary Matsubara frequencies

Return type:

array(complex)