.. _sphx_glr_dimer_lattice_plot_hubbard_III.py: ===================== Hubbard III for dimer ===================== Describing the position of the Self-Energy pole in the diagonal basis .. code-block:: python # Created Mon Mar 14 13:56:37 2016 # Author: Óscar Nájera from __future__ import absolute_import, division, print_function import matplotlib.pyplot as plt import numpy as np import dmft.common as gf import dmft.dimer as dimer from dmft.plot import plot_band_dispersion import slaveparticles.quantum.operators as op The Dimer limit --------------- Here I study the shape of spectral function and the origin of its poles looking for the zeros of the self energy .. code-block:: python def molecule_sigma_d(omega, U, mu, tp, beta): """Return molecule self-energy in the given frequency axis""" h_at, oper = dimer.hamiltonian_diag(U, mu, tp) oper_pair = [[oper[0], oper[0]], [oper[1], oper[1]]] eig_e, eig_v = op.diagonalize(h_at.todense()) gfsU = np.array([op.gf_lehmann(eig_e, eig_v, c.T, beta, omega, d) for c, d in oper_pair]) plt.plot(omega.real, -(gfsU[1]).imag, label='Anti-Bond') plt.plot(omega.real, -(gfsU[0]).imag, label='Bond') plt.xlabel(r'$\omega$') plt.ylabel(r'$A(\omega)$') plt.title(r'Isolated dimer $U={}$, $t_\perp={}$, $\beta={}$'.format(U, tp, beta)) plt.legend(loc=0) return [omega + tp - 1 / gfsU[0], omega - tp - 1 / gfsU[1]] w = np.linspace(-3, 3, 800) U = 2.5 tp = 0.3 plt.figure() sig_b, sig_a = molecule_sigma_d(w + 5e-2j, U, 0, tp, 500) plt.plot(w, sig_a.real - w + tp, label=r'$\Sigma_{A} - w + t_\perp$') plt.plot(w, sig_b.real - w - tp, label=r'$\Sigma_{B} - w - t_\perp$') plt.legend(loc=0) .. image:: /dimer_lattice/images/sphx_glr_plot_hubbard_III_001.png :align: center Hubbard III approximation ------------------------- Taking advantage of the rotated basis which is diagonal I can independently treat each system on its own and solve 2 decoupled system equations. In this case the poles of the green function are equally weighted, only its position is correct, in comparison to the isolated dimer green function .. code-block:: python sp_2 = (U**2 + 16 * tp**2) / 4. g0_1_a = w - tp + 5e-2j + 2 * tp # The excitation out of the singlet has g0_1_b = w + tp + 5e-2j - 2 * tp # this extra contribution of 2tp plt.figure() x = .60 plt.plot(w, -((1 - (1 - 2 * x) * sp_2 / g0_1_a) / (g0_1_a - sp_2 / g0_1_a)).imag, label='Anti-bond') plt.plot(w, -((1 + (1 - 2 * x) * sp_2 / g0_1_b) / (g0_1_b - sp_2 / g0_1_b)).imag, label='Bond') plt.xlabel(r'$\omega$') plt.ylabel(r'$A(\omega)$') plt.title(r'Isolated dimer approximation $U={}$, $t_\perp={}$'.format(U, tp)) plt.legend(loc=0) for i in range(2000): g0_1_a = w - tp - .25 * (1 - (1 - 2 * x) * sp_2 / g0_1_a) / (g0_1_a - sp_2 / g0_1_a) g0_1_b = w + tp - .25 * (1 + (1 - 2 * x) * sp_2 / g0_1_b) / (g0_1_b - sp_2 / g0_1_b) .. image:: /dimer_lattice/images/sphx_glr_plot_hubbard_III_002.png :align: center The Self-Energy --------------- .. code-block:: python plt.figure() sb = sp_2 * ((1 - 2 * x) + 1 / g0_1_b) / (1 + (1 - 2 * x) * sp_2 / g0_1_b) plt.plot(w, sb.real, label=r"Re Bond") plt.plot(w, sb.imag, label=r"Im Bond") sa = sp_2 * (-(1 - 2 * x) + 1 / g0_1_a) / (1 - (1 - 2 * x) * sp_2 / g0_1_a) plt.plot(w, sa.real, label=r"Re Anti-Bond") plt.plot(w, sa.imag, label=r"Im Anti-Bond") plt.ylabel(r'$\Sigma(\omega)$') plt.xlabel(r'$\omega$') plt.title(r'$\Sigma(\omega)$ at $U= {}$'.format(U)) plt.legend(loc=0) plt.ylim([-3.5, 2]) .. image:: /dimer_lattice/images/sphx_glr_plot_hubbard_III_003.png :align: center The Green Function ------------------ .. code-block:: python plt.figure() g_b = 1 / (w + tp - sb) plt.plot(w, g_b.real, label=r"Re Bond") plt.plot(w, g_b.imag, label=r"Im Bond") plt.figure() g_b = gf.greenF(-1j * w, sb, tp) zeta = w + tp - sb g_b = 2 * zeta * (1 - np.sqrt(1 - 1 / zeta**2)) g_b = 1 / (g0_1_b - sb) plt.plot(w, g_b.real, label=r"Re Bond") plt.plot(w, g_b.imag, label=r"Im Bond") plt.plot(w, sb.real - w - tp, label=r'$\Sigma_{S} - w + t_\perp$') plt.ylabel(r'$G(\omega)$') plt.xlabel(r'$\omega$') plt.title(r'$G(\omega)$ at $U= {}$'.format(U)) plt.ylim([-3.5, 2]) plt.legend(loc=0) .. rst-class:: sphx-glr-horizontal * .. image:: /dimer_lattice/images/sphx_glr_plot_hubbard_III_004.png :scale: 47 * .. image:: /dimer_lattice/images/sphx_glr_plot_hubbard_III_005.png :scale: 47 The Band Dispersion ------------------- .. code-block:: python eps_k = np.linspace(-1, 1, 61) lat_gf = 1 / (np.add.outer(-eps_k, w + tp + 8e-2j) - sp_2 / g0_1_b) + \ 1 / (np.add.outer(-eps_k, w - tp + 8e-2j) - sp_2 / g0_1_a) Aw = -lat_gf.imag / np.pi / 2 plot_band_dispersion(w, Aw, 'Hubbard III band dispersion', eps_k) .. rst-class:: sphx-glr-horizontal * .. image:: /dimer_lattice/images/sphx_glr_plot_hubbard_III_006.png :scale: 47 * .. image:: /dimer_lattice/images/sphx_glr_plot_hubbard_III_007.png :scale: 47 **Total running time of the script:** ( 0 minutes 1.026 seconds) .. container:: sphx-glr-footer .. container:: sphx-glr-download :download:`Download Python source code: plot_hubbard_III.py <plot_hubbard_III.py>` .. container:: sphx-glr-download :download:`Download Jupyter notebook: plot_hubbard_III.ipynb <plot_hubbard_III.ipynb>` .. rst-class:: sphx-glr-signature `Generated by Sphinx-Gallery <https://sphinx-gallery.readthedocs.io>`_