.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "api/gallery/condensed/correlated/plot_hubbard_mott_transition.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_api_gallery_condensed_correlated_plot_hubbard_mott_transition.py: The Hubbard Model: Mott Suppression of Itinerant Motion ============================================================== The Hubbard model is the minimal model of interacting electrons on a lattice: band electrons that hop with amplitude :math:`t`, penalized by an onsite Coulomb repulsion :math:`U` whenever two opposite-spin electrons share a site. As :math:`U/t \to \infty` at half filling, double occupancy is suppressed entirely and the itinerant metal is driven into a Mott insulator of localized moments. :func:`~physicskit.condensed.correlated.hubbard_1d_exact_diagonalization` builds and diagonalizes the full Fock-space Hamiltonian in a fixed :math:`(n_\uparrow, n_\downarrow)` sector for small clusters, exposing this crossover directly in the ground-state energy. .. GENERATED FROM PYTHON SOURCE LINES 16-22 .. code-block:: Python import matplotlib.pyplot as plt import numpy as np from physicskit.condensed.correlated import hubbard_1d_exact_diagonalization .. GENERATED FROM PYTHON SOURCE LINES 23-28 Exact diagonalization of a half-filled chain across U/t ------------------------------------------------------------- A 6-site chain at half filling (3 up, 3 down electrons), open boundary conditions, scanning the onsite repulsion from the noninteracting limit to the strongly correlated regime. .. GENERATED FROM PYTHON SOURCE LINES 28-33 .. code-block:: Python n_sites = 6 U_values = np.linspace(0, 12, 25) E0 = [hubbard_1d_exact_diagonalization(n_sites, n_up=3, n_dn=3, t=1.0, U=U)["ground_state_energy"] for U in U_values] .. GENERATED FROM PYTHON SOURCE LINES 34-41 The itinerant-to-localized crossover ------------------------------------------ At ``U=0`` the ground state is a free-fermion Fermi sea, gaining a large negative kinetic energy from delocalized hopping. As ``U/t`` grows, the energy curve flattens: double occupancy is squeezed out and the electrons freeze into singly occupied, localized moments -- the many-body signature of the Mott transition. .. GENERATED FROM PYTHON SOURCE LINES 43-59 The charge gap: the direct diagnostic of a Mott insulator --------------------------------------------------------------------- A flattening ground-state energy is suggestive, but the sharp, unambiguous signature of a Mott insulator is a nonzero *charge gap*: the energy cost to add or remove one electron from half filling, :math:`\Delta_c = E_0(N+1) + E_0(N-1) - 2E_0(N)`, evaluated by exact diagonalization in the neighboring particle-number sectors. In the thermodynamic limit a metal has :math:`\Delta_c=0`; a Mott insulator has :math:`\Delta_c>0` growing with :math:`U`. This 6-site chain is far from that limit, so :math:`\Delta_c(U=0)` is not actually zero -- it is the ordinary finite-size level spacing of a free-fermion "particle in a box," which only vanishes as the chain grows. What is still a genuine, interaction-driven effect at this size is how much *further* the gap opens as :math:`U` turns on, well beyond that finite-size baseline -- exactly the charge-transfer gap seen in real correlated insulators. .. GENERATED FROM PYTHON SOURCE LINES 59-86 .. code-block:: Python E_plus = [hubbard_1d_exact_diagonalization(n_sites, n_up=4, n_dn=3, t=1.0, U=U)["ground_state_energy"] for U in U_values] E_minus = [hubbard_1d_exact_diagonalization(n_sites, n_up=2, n_dn=3, t=1.0, U=U)["ground_state_energy"] for U in U_values] charge_gap = np.array(E_plus) + np.array(E_minus) - 2 * np.array(E0) fig, axes = plt.subplots(1, 2, figsize=(11, 4)) axes[0].plot(U_values, E0, "o-") axes[0].set_xlabel("U/t") axes[0].set_ylabel(r"Ground-state energy $E_0$") axes[0].set_title("Mott suppression: itinerant metal -> localized moments") axes[1].plot(U_values, charge_gap, "o-", color="C1") axes[1].axhline(charge_gap[0], color="gray", ls="--", lw=1, label=f"U=0 finite-size baseline ({charge_gap[0]:.2f})") axes[1].set_xlabel("U/t") axes[1].set_ylabel(r"charge gap $\Delta_c = E_0(N{+}1)+E_0(N{-}1)-2E_0(N)$") axes[1].set_title("Charge gap grows well past its finite-size baseline") axes[1].legend(fontsize=8) fig.suptitle("The Hubbard model at half filling: energy flattens, charge gap opens") fig.tight_layout() slope_start = (E0[1] - E0[0]) / (U_values[1] - U_values[0]) slope_end = (E0[-1] - E0[-2]) / (U_values[-1] - U_values[-2]) print(f"dE0/dU near U=0: {slope_start:.4f} dE0/dU near U=12: {slope_end:.4f} (flattening as U grows)") ratio = charge_gap[-1] / charge_gap[0] print(f"charge gap at U=0: {charge_gap[0]:.4f} (finite-size baseline, not a Mott gap) at U=12: {charge_gap[-1]:.4f} ({ratio:.1f}x above baseline)") .. image-sg:: /api/gallery/condensed/correlated/images/sphx_glr_plot_hubbard_mott_transition_001.png :alt: The Hubbard model at half filling: energy flattens, charge gap opens, Mott suppression: itinerant metal -> localized moments, Charge gap grows well past its finite-size baseline :srcset: /api/gallery/condensed/correlated/images/sphx_glr_plot_hubbard_mott_transition_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none dE0/dU near U=0: 1.4294 dE0/dU near U=12: 0.1000 (flattening as U grows) charge gap at U=0: 0.8901 (finite-size baseline, not a Mott gap) at U=12: 9.0538 (10.2x above baseline) .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.301 seconds) .. _sphx_glr_download_api_gallery_condensed_correlated_plot_hubbard_mott_transition.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_hubbard_mott_transition.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_hubbard_mott_transition.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_hubbard_mott_transition.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_