Hubbard III approximation

In this approach the aim is to find the band dispersion of the insulating system but including the effects of the bath. For this one approximates the local Green’s function by

And the using the self consistency equation of the Bethe lattice

Here this equation can be solved analytically but for current purposes
here it will be solved by fixed point iteration.
# Created Fri Apr  1 14:44:59 2016
# Author: Óscar Nájera

from __future__ import absolute_import, division, print_function

import numpy as np
import matplotlib.pyplot as plt

import dmft.common as gf
from dmft.plot import plot_band_dispersion


w = np.linspace(-3, 3, 800)
g0_1 = w + 1e-6j
U = 2.

for i in range(2000):
    g0_1 = w - .25 / (g0_1 - U**2 / 4. / g0_1)

The Self-Energy

plt.figure()
plt.plot(w, (U**2 / 4 / g0_1).real, label=r"Real")
plt.plot(w, (U**2 / 4 / g0_1).imag, label=r"Imag")

plt.ylabel(r'$\Sigma(\omega)$')
plt.xlabel(r'$\omega$')
plt.title(r'$\Sigma(\omega)$ at $U= {}$'.format(U))
plt.legend(loc=0)
plt.ylim([-1.5, 1])
../_images/sphx_glr_plot_hubbardIII_001.png

The Green Function

plt.figure()
plt.plot(w, (1 / (w - U**2 / 4 / g0_1)).real, label=r"Real")
plt.plot(w, (1 / (w - U**2 / 4 / g0_1)).imag, label=r"Imag")
plt.plot(w, (gf.semi_circle_hiltrans(w - U**2 / 4 / g0_1)).imag, label=r"Imag")

plt.ylabel(r'$G(\omega)$')
plt.xlabel(r'$\omega$')
plt.title(r'$G(\omega)$ at $U= {}$'.format(U))
plt.legend(loc=0)
../_images/sphx_glr_plot_hubbardIII_002.png

The Band Dispersion

eps_k = np.linspace(-1, 1, 61)
lat_gf = 1 / (np.add.outer(-eps_k, w + 8e-2j) - U**2 / 4 / g0_1)
Aw = -lat_gf.imag / np.pi

plot_band_dispersion(w, Aw, 'Hubbard III band dispersion', eps_k)
  • ../_images/sphx_glr_plot_hubbardIII_003.png
  • ../_images/sphx_glr_plot_hubbardIII_004.png

Total running time of the script: ( 0 minutes 0.586 seconds)

Generated by Sphinx-Gallery