diff --git a/examples/1d_hubbard_totalenergy.ipynb b/examples/1d_hubbard_totalenergy.ipynb deleted file mode 100644 index 5464fdc76f2902005f31695001f450b175d71446..0000000000000000000000000000000000000000 --- a/examples/1d_hubbard_totalenergy.ipynb +++ /dev/null @@ -1,461 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "cb509096-42c6-4a45-8dc4-a8eed3116e67", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import pymf\n", - "from tqdm import tqdm" - ] - }, - { - "cell_type": "markdown", - "id": "396d935c-146e-438c-878b-04ed70aa6d63", - "metadata": {}, - "source": [ - "To simulate infinite systems, we provide the corresponding tight-binding model.\n", - "\n", - "We exemplify this construction by computing the ground state of an infinite spinful chain with onsite interactions.\n", - "\n", - "Because the ground state is an antiferromagnet, so we must build a two-atom cell. We name the two sublattices, $A$ and $B$. The Hamiltonian in is:\n", - "$$\n", - "H_0 = \\sum_i c_{i, B}^{\\dagger}c_{i, A} + c_{i, A}^{\\dagger}c_{i+1, B} + h.c.\n", - "$$\n", - "We write down the spinful by simply taking $H_0(k) \\otimes \\mathbb{1}$." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "5529408c-fb7f-4732-9a17-97b0718dab29", - "metadata": {}, - "outputs": [], - "source": [ - "hopp = np.kron(np.array([[0, 1], [0, 0]]), np.eye(2))\n", - "h_0 = {(0,): hopp + hopp.T.conj(), (1,): hopp, (-1,): hopp.T.conj()}" - ] - }, - { - "cell_type": "markdown", - "id": "050f5435-6699-44bb-b31c-8ef3fa2264d4", - "metadata": {}, - "source": [ - "To build the tight-binding model, we need to generate a Hamiltonian on a k-point and the corresponding hopping vectors to generate a guess. We then verify the spectrum and see that the bands indeed consistent of two bands due to the Brillouin zone folding." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "b39a2976-7c35-4670-83ef-12157bd3fc0e", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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r+fQoUNkZ2fn2sdkMhEQEEC7du14+eWXueeeewxKKyIixcX27dv54IMPWLNmzTVDYSBnbFK1atV44IEH6NOnD3Xr1i36kP9D5clA9lSermfDhg18/vnn/P777xw7duya+++66y7uv/9+XnrpJRo3bmxAQhERcUS//PILU6dOZePGjddMRm0ymQgMDKRt27YMGDDgple9G0XlyUD2Xp7+KT09ndmzZzN37lx27NhxzaFUd3d37r//fl599VUaNmxoUEoREbFXy5YtY+LEiWzevJnMzMxc95UuXZpGjRrRp08funXrhrOzfV97pvJkIEcqT/9r7dq1TJkyhbVr19omFL3K09OTNm3aMHbsWEJDQw1KKCIiRtuwYQNvvfUWa9euveaP7rJly9K2bVtGjBhB7dq1DUp4a1SeDOTI5emf9u3bx1tvvcWyZcuuKVJ+fn48/fTT/Pe//8XDw8OghCIiUlSSkpL473//y08//cT58+dz3efr60vXrl0ZPXr0v04HZM9UngxUXMrTP23bto0333yT3377jfT0dNt2k8lEnTp1GDNmDI8++qiBCUVEpKBZLBamT5/ORx99RHx8fK77vL296dSpE2PHji02FxqpPBmoOJanf1q8eDFvvvkmO3bsyDUNgoeHBz169OCdd9656dqBIiJi3w4fPszw4cP55Zdfco1jKlWqFC1btuT1118vlhcUFcbnt31N2SmGeeihh/jzzz+5ePEi48aNo0KFCkDOPB6ff/45Pj4+NGjQgFWrVhmcVERE8uObb76hRo0aVKlShZ9//tlWnKpXr860adPIyMhg1apVxbI4FRYdecqj4n7k6Xr27NnDiBEjWL16da55pHx9fRkxYgQvvfSS3U2ZLyIikJGRwZgxY/j8889zLZLr6urKQw89xPvvv5+vpcUcmY48SZGqXbs2K1euJD09nXHjxuHr6wvkrAn4yiuv4O7uTq9evTh79qzBSUVEBHJOzXXs2BEPDw8++OADW3GqUqUK06dPJz09nR9++KHEFKfCovIk/8rFxYWxY8dy8uRJVq5cSa1atQC4fPkyc+bMwcfHh8jISA4fPmxwUhGRkmn79u00aNCAKlWqsHTpUrKzszGZTDRv3pxdu3aRkJDAgAEDdLaggOinKPny4IMPsmfPHg4dOkTHjh1xcnLCarWyatUqqlSpwr333svOnTuNjiki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RERE0KtXL3r27Omw56pFRMR+ZGRkMGPGDObNm8fu3bvJyMi4Zh9vb2/q1q1L586deeqppwxfqkvlyUBGlaf09HSWLFnCokWL2LZtG4mJibmujLjK2dmZwMBAOnTowODBg7nnnnuKLKOIiJRMO3fuZPr06axcuZJjx45ddxmYO+64g8DAQBo3bswjjzxCZGRkka5IUeLL06FDh3jjjTdYvXo1SUlJ+Pv789RTTzFmzJibDna2Wq2MHz+ezz77jHPnztGwYUOmTZtGaGhonl+7sMuTxWJh//79rFixgj/++IN9+/Zx7NgxLl26dN39r5al+++/n169etG4ceMCzyQiIpJXFouFFStW8M0337Bx40aOHDlywzX1PDw8qFixInXq1KFly5ZERkYW2h/9Jb48/frrr3z//ff06NGDatWqER0dTd++fenZsyfvv//+DR/37rvv8tZbbzF79mxq1KjBm2++yfr164mLi6N06dJ5eu2C+OGnpaWxc+dOdu3aRUxMDAcOHCAhIYHk5GTS09Nv+tgyZcpQs2ZN7rvvPnr06GH3A/RERKRks1gsbNu2jR9++IH169dz4MABUlNTb7i/yWTCw8ODcuXKUbVqVYKCgggJCaFevXrUqVPnlq/wK/Hl6Xree+89PvnkE/7+++/r3m+1WvH392fo0KGMHDkSgMuXL1OuXDneffdd+vXrl6fXufrDX7RoEc7Ozly6dInMzEzS09M5c+YM586d49y5c5w/f55z585x+vRpzp07R2pqKunp6Vy+fDlPq1o7OztTtmxZgoKCuPfee2nXrh3NmjXTorsiIuLwMjIy+O2331i1ahXbtm3jr7/+4uzZs2RnZ//rY52cnHB1deXOO+/E09OTu+66i7Jly+Lt7Y23tzd33XUXd999N3fffTfh4eHUrl0bKJzy5PCfyCkpKZQpU+aG9yckJJCUlERkZKRtm6urKy1btmTTpk03LE+XL1/OddXa1bbcuXPn285cqlQpPDw88PHx4Z577qF27do0bdqUFi1a2N1VCiIiIgXFzc2Njh07XjMZc1JSEuvWrWPLli3s3buXhIQEzpw5w8WLF21LxmRnZ5Oenk56ejqnTp266es0atSIzZs3F9r34dDl6eDBg0ydOpVJkybdcJ+kpCQAypUrl2t7uXLlOHz48A0fN2HCBMaPH3/d+0wmk+1/zWYzTk5O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wSxduvSa4hQTE8PRo0d54IEHADh8+DCDBw8mLCyMu+66Cw8PD3744QcqVqxoRHwRsTMqTyJS7EVFRdG1a1cyMjI4f/78NfcvXryYBx98kDvuuIPTp09z7733cvr0aT744AM2bNjA5s2bcXJy+ter9USkZNBpOxEp1i5cuEBCQgIDBw6kadOm9OjRg02bNhEaGmrbZ9GiRTz33HMALFu2jKysLL777jtMJhMA06ZNIzMzU+VJRACVJxEp5qKionBycqJmzZqEh4ezb98+OnXqxJ9//omPjw/Jycls27aNhQsXAlCmTBlSU1NZvHgxNWvWZMmSJUyYMIEKFSpQtmxZY78ZEbELOm0nIsXa7t27CQ4OxtXVFYB3332XmjVr8sgjj5CZmcmSJUto2LAhvr6+AHTo0IFnn32Wnj170qxZM44dO0b37t111ElEbExWq9VqdAgREaM89NBDNGvWjFdeecXoKCLiIHTkSURKtGbNmtGjRw+jY4iIA9GRJxEREZF80JEnERERkXxQeRIRERHJB5UnERERkXxQeRIRERHJB5UnERERkXxQeRIRERHJB5UnERERkXxQeRIRERHJB5UnERERkXz4f+Vq/hDWzQe3AAAAAElFTkSuQmCC", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Set number of k-points\n", - "nk = 100\n", - "ks = np.linspace(0, 2*np.pi, nk, endpoint=False) \n", - "hamiltonians_0 = pymf.tb_to_khamvector(h_0, nk, ks=ks) \n", - "\n", - "# Perform diagonalization\n", - "vals, vecs = np.linalg.eigh(hamiltonians_0)\n", - "# Plot data\n", - "plt.plot(ks, vals, c=\"k\")\n", - "plt.xticks([0, np.pi, 2 * np.pi], [\"$0$\", \"$\\pi$\", \"$2\\pi$\"])\n", - "plt.xlim(0, 2 * np.pi)\n", - "plt.ylabel(\"$E - E_F$\")\n", - "plt.xlabel(\"$k / a$\")\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "6ec53b08-053b-4aad-87a6-525dd7f61687", - "metadata": {}, - "source": [ - "Here, in the workflow to find the ground state, we use a helper function to build the initial guess. because we don't need a dense k-point grid in the self-consistent loop, we compute the spectrum later on a denser k-point grid." - ] - }, - { - "cell_type": "markdown", - "id": "dc59e440-1289-4735-9ae8-b04d0d13c94a", - "metadata": {}, - "source": [ - "Finally, we compute the eigen0alues for a set of Ualues of $U$. For this case, since the interaction is onsite only, the interaction matrix is simply\n", - "$$\n", - "H_{int} =\n", - "\\left(\\begin{array}{cccc}\n", - " U & U & 0 & 0\\\\\n", - " U & U & 0 & 0\\\\\n", - " 0 & 0 & U & U\\\\\n", - " 0 & 0 & U & U\n", - "\\end{array}\\right)~.\n", - "$$" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "32b9e7c5-db12-44f9-930c-21e5494404b8", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "def compute_sol(U, h_0, nk, filling=2):\n", - " h_int = {\n", - " (0,): U * np.kron(np.eye(2), np.ones((2, 2))),\n", - " }\n", - " guess = pymf.generate_guess(frozenset(h_int), len(list(h_0.values())[0]))\n", - " full_model = pymf.Model(h_0, h_int, filling)\n", - " mf_sol = pymf.solver(full_model, guess, nk=nk, optimizer_kwargs={\"M\":0})\n", - " return pymf.add_tb(h_0, mf_sol)\n", - "\n", - "\n", - "def compute_gap_and_vals(full_sol, nk_dense, fermi_energy=0):\n", - " h_kgrid = pymf.tb_to_khamvector(full_sol, nk_dense)\n", - " vals = np.linalg.eigvalsh(h_kgrid)\n", - "\n", - " emax = np.max(vals[vals <= fermi_energy])\n", - " emin = np.min(vals[vals > fermi_energy])\n", - " return np.abs(emin - emax), vals\n", - "\n", - "\n", - "def compute_phase_diagram(\n", - " Us,\n", - " nk,\n", - " nk_dense,\n", - "):\n", - " gaps = []\n", - " vals = []\n", - " for U in tqdm(Us):\n", - " full_sol = compute_sol(U, h_0, nk)\n", - " gap, _vals = compute_gap_and_vals(full_sol, nk_dense)\n", - " gaps.append(gap)\n", - " vals.append(_vals)\n", - "\n", - " return np.asarray(gaps, dtype=float), np.asarray(vals)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "6a8c08a9-7e31-420b-b6b4-709abfb26793", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 75%|███████▌ | 15/20 [00:02<00:00, 5.07it/s]/Users/rzijderveld/opt/anaconda3/lib/python3.9/site-packages/scipy/optimize/_nonlin.py:1072: LinAlgWarning: Ill-conditioned matrix (rcond=9.07651e-17): result may not be accurate.\n", - " gamma = solve(self.a, df_f)\n", - "/Users/rzijderveld/opt/anaconda3/lib/python3.9/site-packages/scipy/optimize/_nonlin.py:1072: LinAlgWarning: Ill-conditioned matrix (rcond=8.54968e-17): result may not be accurate.\n", - " gamma = solve(self.a, df_f)\n", - "/Users/rzijderveld/opt/anaconda3/lib/python3.9/site-packages/scipy/optimize/_nonlin.py:1072: LinAlgWarning: Ill-conditioned matrix (rcond=8.17567e-17): result may not be accurate.\n", - " gamma = solve(self.a, df_f)\n", - "/Users/rzijderveld/opt/anaconda3/lib/python3.9/site-packages/scipy/optimize/_nonlin.py:1072: LinAlgWarning: Ill-conditioned matrix (rcond=8.88621e-17): result may not be accurate.\n", - " gamma = solve(self.a, df_f)\n", - "/Users/rzijderveld/opt/anaconda3/lib/python3.9/site-packages/scipy/optimize/_nonlin.py:1072: LinAlgWarning: Ill-conditioned matrix (rcond=9.35564e-17): result may not be accurate.\n", - " gamma = solve(self.a, df_f)\n", - "/Users/rzijderveld/opt/anaconda3/lib/python3.9/site-packages/scipy/optimize/_nonlin.py:1072: LinAlgWarning: Ill-conditioned matrix (rcond=9.73285e-17): result may not be accurate.\n", - " gamma = solve(self.a, df_f)\n", - " 85%|████████▌ | 17/20 [00:06<00:01, 2.47it/s]\n" - ] - }, - { - "ename": "NoConvergence", - "evalue": "[ 1.86715628e+00 4.47287535e-02 -1.23356829e-04 1.20430729e-03\n 4.47287535e-02 2.63543104e+00 2.63234161e-03 3.71702031e-03\n -1.23356829e-04 2.63234161e-03 1.86002862e+00 4.51677226e-02\n 1.20430729e-03 3.71702031e-03 4.51677226e-02 2.64245378e+00\n 0.00000000e+00 1.61192759e-01 -1.51104882e-03 1.47113079e-03\n -1.61192759e-01 0.00000000e+00 5.03808388e-03 1.99828384e-03\n 1.51104882e-03 -5.03808388e-03 0.00000000e+00 1.64032886e-01\n -1.47113079e-03 -1.99828384e-03 -1.64032886e-01 0.00000000e+00]", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNoConvergence\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m/var/folders/yf/2jcxwgld3l77h6y62fb5ty8ssr_5lq/T/ipykernel_78867/1169016709.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mUs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinspace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0.5\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m10\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m20\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mendpoint\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mnk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnk_dense\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m40\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m100\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mgap\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvals\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcompute_phase_diagram\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mUs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mUs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnk\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnk_dense\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnk_dense\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m/var/folders/yf/2jcxwgld3l77h6y62fb5ty8ssr_5lq/T/ipykernel_78867/3682270308.py\u001b[0m in \u001b[0;36mcompute_phase_diagram\u001b[0;34m(Us, nk, nk_dense)\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[0mvals\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mU\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mtqdm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mUs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 28\u001b[0;31m \u001b[0mfull_sol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcompute_sol\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mU\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mh_0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 29\u001b[0m \u001b[0mgap\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_vals\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcompute_gap_and_vals\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfull_sol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnk_dense\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[0mgaps\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgap\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/var/folders/yf/2jcxwgld3l77h6y62fb5ty8ssr_5lq/T/ipykernel_78867/3682270308.py\u001b[0m in \u001b[0;36mcompute_sol\u001b[0;34m(U, h_0, nk, filling)\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mguess\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpymf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgenerate_guess\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfrozenset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mh_int\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mh_0\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mfull_model\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpymf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mModel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mh_0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mh_int\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfilling\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0mmf_sol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpymf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msolver\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfull_model\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mguess\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnk\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mpymf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_tb\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mh_0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmf_sol\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/kwant-scf/pymf/solvers.py\u001b[0m in \u001b[0;36msolver\u001b[0;34m(Model, mf_guess, nk, optimizer, optimizer_kwargs)\u001b[0m\n\u001b[1;32m 60\u001b[0m \u001b[0mf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpartial\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mModel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mModel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnk\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 61\u001b[0m result = rparams_to_tb(\n\u001b[0;32m---> 62\u001b[0;31m \u001b[0moptimizer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmf_params\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0moptimizer_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mModel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mh_int\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshape\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 63\u001b[0m )\n\u001b[1;32m 64\u001b[0m \u001b[0mfermi\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcalculate_fermi_energy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0madd_tb\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mModel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mh_0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mModel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfilling\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnk\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/opt/anaconda3/lib/python3.9/site-packages/scipy/optimize/_nonlin.py\u001b[0m in \u001b[0;36manderson\u001b[0;34m(F, xin, iter, alpha, w0, M, verbose, maxiter, f_tol, f_rtol, x_tol, x_rtol, tol_norm, line_search, callback, **kw)\u001b[0m\n", - "\u001b[0;32m~/opt/anaconda3/lib/python3.9/site-packages/scipy/optimize/_nonlin.py\u001b[0m in \u001b[0;36mnonlin_solve\u001b[0;34m(F, x0, jacobian, iter, verbose, maxiter, f_tol, f_rtol, x_tol, x_rtol, tol_norm, line_search, callback, full_output, raise_exception)\u001b[0m\n\u001b[1;32m 239\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 240\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mraise_exception\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 241\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mNoConvergence\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_array_like\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 242\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 243\u001b[0m \u001b[0mstatus\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNoConvergence\u001b[0m: [ 1.86715628e+00 4.47287535e-02 -1.23356829e-04 1.20430729e-03\n 4.47287535e-02 2.63543104e+00 2.63234161e-03 3.71702031e-03\n -1.23356829e-04 2.63234161e-03 1.86002862e+00 4.51677226e-02\n 1.20430729e-03 3.71702031e-03 4.51677226e-02 2.64245378e+00\n 0.00000000e+00 1.61192759e-01 -1.51104882e-03 1.47113079e-03\n -1.61192759e-01 0.00000000e+00 5.03808388e-03 1.99828384e-03\n 1.51104882e-03 -5.03808388e-03 0.00000000e+00 1.64032886e-01\n -1.47113079e-03 -1.99828384e-03 -1.64032886e-01 0.00000000e+00]" - ] - } - ], - "source": [ - "# Interaction strengths\n", - "Us = np.linspace(0.5, 10, 20, endpoint=True)\n", - "nk, nk_dense = 40, 100\n", - "gap, vals = compute_phase_diagram(Us=Us, nk=nk, nk_dense=nk_dense)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "e17fc96c-c463-4e1f-8250-c254d761b92a", - "metadata": {}, - "outputs": [], - "source": [ - "import xarray as xr\n", - "\n", - "ds = xr.Dataset(\n", - " data_vars=dict(vals=([\"Us\", \"ks\", \"n\"], vals), gap=([\"Us\"], gap)),\n", - " coords=dict(\n", - " Us=Us,\n", - " ks=np.linspace(0, 2 * np.pi, nk_dense),\n", - " n=np.arange(vals.shape[-1])\n", - " ),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "5a87dcc1-208b-4602-abad-a870037ec95f", - "metadata": {}, - "source": [ - "\n", - "We observe that as the interaction strength increases, a gap opens due to the antiferromagnetic ordering." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "50f02d06", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "<matplotlib.collections.PathCollection at 0x7fe0a154a130>" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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jz+uXbt26R//+IceeeQRPfroo/rd737n9Gg15/PPP9e3vvUt7dq1a97vP/LII9qxY4d27dqlgwcPKhgMat26dbnP67ITl5vWkU8++UTNzc3at2+f1q5d6/Q4deGzzz5TW1ubHnvsMT388MO6+OKLtXPnTqfHqmn33HOP/v73v+tvf/ub06PUneuvv15LlizR73//+9y273//+1q8eLH+8Ic/ODhZbXO5XHr22Wd14403Sjp+tKKlpUWbNm3Sli1bJEkzMzNasmSJtm/frp/97Ge2zsMRizqSSqUkSY2NjQ5PUj+6u7t13XXX6ZprrnF6lLrx/PPPa+XKlbrpppvU3NysSy65RLt373Z6rLqwZs0avfTSSzpy5Igk6c0339SBAwd07bXXOjxZfRkbG9P4+LjWr1+f2+b1enXllVfqlVdesf3+y/4hZHCGZVnavHmz1qxZo2g06vQ4deHpp5/W8PCwDh486PQodeX9999Xb2+vNm/erPvuu09DQ0O666675PV6deuttzo9Xk3bsmWLUqmUli9fLo/Ho0wmo61bt+rmm292erS6Mj4+LklasmRJ3vYlS5bogw8+sP3+CYs6sWHDBr311ls6cOCA06PUhaNHj2rjxo3685//LJ/P5/Q4dSWbzWrlypXatm2bJOmSSy7RO++8o97eXsLCZnv37lV/f7/27NmjFStW6PDhw9q0aZNaWlp02223OT1e3XG5XHm3Lcuas80OhEUduPPOO/X8889r//79fGR9mRw6dEgTExO69NJLc9symYz279+vXbt2aWZmRh6Px8EJa1coFFIkEsnbduGFF+qPf/yjQxPVj5///Oe655579MMf/lCS9M1vflMffPCBenp6CIsyCgaDko4fuQiFQrntExMTc45i2IH3WNQwy7K0YcMGPfPMM3r55ZcVDoedHqluXH311Xr77bd1+PDh3NfKlSt1yy236PDhw0SFjVavXj3nsuojR47o3HPPdWii+vHFF1/I7c5/WfF4PFxuWmbhcFjBYFAvvvhibtuXX36pffv26fLLL7f9/jliUcO6u7u1Z88e/elPf5Lf78+ddwsEAlq0aJHD09U2v98/570sZ511lpqamniPi83uvvtuXX755dq2bZt+8IMfaGhoSH19ferr63N6tJoXi8W0detWLV26VCtWrNAbb7yhHTt26I477nB6tJrz2Wef6b333svdHhsb0+HDh9XY2KilS5dq06ZN2rZtmy644AJdcMEF2rZtmxYvXqwf/ehH9g9noWZJmvfriSeecHq0unTllVdaGzdudHqMujAwMGBFo1HL6/Vay5cvt/r6+pweqS6k02lr48aN1tKlSy2fz2edf/751v3332/NzMw4PVrN+ctf/jLv3/fbbrvNsizLymazVjwet4LBoOX1eq21a9dab7/9dllmYx0LAABgDO+xAAAAxhAWAADAGMICAAAYQ1gAAABjCAsAAGAMYQEAAIwhLAAAgDGEBQAAMIawAAAAxhAWAADAGMICAAAYQ1gAAABj/j+4y9R0fBf9vgAAAABJRU5ErkJggg==", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.scatter(Us, gap)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "868cf368-45a0-465e-b042-6182ff8b6998", - "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'_PlotMethods' object has no attribute 'scatter'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m/var/folders/yf/2jcxwgld3l77h6y62fb5ty8ssr_5lq/T/ipykernel_78867/3492086229.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvals\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscatter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"ks\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhue\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"Us\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mec\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ms\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0maxhline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mls\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"--\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mc\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"k\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxticks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m\"$0$\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"$\\pi$\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"$2\\pi$\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxlim\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mylabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"$E - E_F$\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mAttributeError\u001b[0m: '_PlotMethods' object has no attribute 'scatter'" - ] - } - ], - "source": [ - "ds.vals.plot.scatter(x=\"ks\", hue=\"Us\", ec=None, s=5)\n", - "plt.axhline(0, ls=\"--\", c=\"k\")\n", - "plt.xticks([0, np.pi, 2 * np.pi], [\"$0$\", \"$\\pi$\", \"$2\\pi$\"])\n", - "plt.xlim(0, 2 * np.pi)\n", - "plt.ylabel(\"$E - E_F$\")\n", - "plt.xlabel(\"$k / a$\")\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "0761ed33-c1bb-4f12-be65-cb68629f58b9", - "metadata": {}, - "source": [ - "The Hartree-Fock dispersion should follow (see [these notes](https://www.cond-mat.de/events/correl11/manuscript/Lechermann.pdf))\n", - "$$\n", - "\\epsilon_{HF}^{\\sigma}(\\mathbf{k}) = \\epsilon(\\mathbf{k}) + U \\left(\\frac{n}{2} + \\sigma m\\right)\n", - "$$\n", - "where $m=(\\langle n_{i\\uparrow} \\rangle - \\langle n_{i\\downarrow} \\rangle) / 2$ is the magnetization per atom and $n = \\sum_i \\langle n_i \\rangle$ is the total number of atoms per cell. Thus, for the antiferromagnetic groundstate, $m=1/2$ and $n=2$. The gap thus should be $\\Delta=U$. And we can confirm it indeed follows the expected trend." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "ac2eb725-f3bd-4d5b-a509-85d0d0071958", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAGwCAYAAABcnuQpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA9+klEQVR4nO3dd3xV9eH/8dfJTiAJewTCFIgBAiGTgIgVsZVSKO4BYalVRAG31lkFcbfiAiIEkGqrRanWukGRkUXYEPY0hJlLBhn3nt8ftvzKV0UIST53vJ+PR/7ISUJfvWru+3HO4V7Ltm0bEREREQ/lZzpARERE5HxozIiIiIhH05gRERERj6YxIyIiIh5NY0ZEREQ8msaMiIiIeDSNGREREfFoAaYD6prL5eLAgQOEh4djWZbpHBERETkLtm1z4sQJoqKi8PM787kXrx8zBw4cIDo62nSGiIiI1MDevXtp27btGb/H68dMeHg48MODERERYbhGREREzobD4SA6OvrU8/iZeP2Y+e+lpYiICI0ZERERD3M2t4joBmARERHxaBozIiIi4tE0ZkRERMSjacyIiIiIR9OYEREREY+mMSMiIiIeTWNGREREPJrGjIiIiHg0jRkRERHxaBozIiIi4tGMjplvvvmGoUOHEhUVhWVZfPDBB6d93bZtHn/8caKioggNDWXgwIFs2LDBTKyIiIi4JaNjprS0lF69ejFjxoyf/Pqzzz7Liy++yIwZM8jOzqZVq1ZcdtllnDhxop5LRURExF0ZHTO/+c1veOqppxgxYsSPvmbbNi+//DIPP/wwI0aMoEePHmRmZlJWVsbChQsN1IqIiMj/sl0u8r98F5fTabTDbe+Z2blzJ4WFhQwePPjUseDgYC6++GKWL1/+sz9XUVGBw+E47UNERERqV4njGDkvXU3vb29h1duPG21x2zFTWFgIQMuWLU873rJly1Nf+ynTpk0jMjLy1Ed0dHSddoqIiPiabWtXcPSlNJJOfEG17YdlWUZ73HbM/Nf/fYBs2z7jg/bggw9SXFx86mPv3r11nSgiIuITbJeLlX97luj3h9LOPsBBmrJtyLukjnzSaFeA0f/1M2jVqhXwwxma1q1bnzpeVFT0o7M1/ys4OJjg4OA67xMREfEljuKjbJ01htSSJWDBmtBU2o/LJKZZK9Np7ntmpmPHjrRq1YrPP//81LHKykqWLl1KWlqawTIRERHfsjX/Wxwv9yWhZAlVtj+rLphM3L2f0MgNhgwYPjNTUlLCtm3bTn2+c+dO8vPzadKkCe3atWPSpElMnTqVLl260KVLF6ZOnUpYWBg33HCDwWoRERHfYLtcrHznGRK2vECQVc33VnNODJ1JSsKvTKedxuiYycnJ4ZJLLjn1+ZQpUwBIT09n7ty53HfffZSXl3P77bdz7NgxUlJS+OyzzwgPDzeVLCIi4hOKjx5i++zR9C1bBhasbtCPTuMzad24uem0H7Fs27ZNR9Qlh8NBZGQkxcXFREREmM4RERFxe5tzvybio1uIsouotP1ZHXM3ydc+iOVXf3ennMvzt9veACwiIiL1y+V0seqvfyJx658JtJzst1pSPmw2KfEDTKedkcaMiIiIcOzwQXZlpNO3fAVYkNfwYrqMn0ObRk1Np/0ijRkREREftynrcxr/6w/Ec5gKO5A13e8j6ap76vWy0vnQmBEREfFRLqeTlQseI3nHqwRYLvZaUVSOeIvkuL6m086JxoyIiIgPOlK0n31vjSLtZA5YkBMxiJjxs2kY0dh02jnTmBEREfEx65d/QovPbqcXRzlpB7Iu7mESf3+Xx1xW+r80ZkRERHyEs7qaVfMeJmX3m/hbNrv92mJfNYek2GTTaedFY0ZERMQHHCrcQ+GcUaRVrP7hslKjXxM7fiZhDSNNp503jRkREREvt+7bxbT+ciI9OU6ZHczG+EdJHH6H6axaozEjIiLipaqrqsjOfICUvRn4WTa7/NphXZNJYkwf02m1SmNGRETECxXt30VR5kj6Vq4FC7KaDCVu/OuEhHnf+xtqzIiIiHiZNUveJ3rJJHrgoNQOYVPikyQPvdV0Vp3RmBEREfESVVWVZM+5h7QDmQBs9+9I0HXzSOwSZ7isbmnMiIiIeIHCvds5Om8kaVUbAMhqNpy4ca8REtrAcFnd05gRERHxcKu/eIcOy+4hlhOU2KEUpE4l+TdjTWfVG40ZERERD1VZUUHuW5Poe3AhANv8OxN24wL6dIo1XFa/NGZEREQ80IFdW3AsGEXf6s0ArGp+NfHjXiEoJNRwWf3TmBEREfEweZ8u4IIV9xFFKQ7C2NF3OimXjzKdZYzGjIiIiIeoqChn9ew7ST30NwAKAroSftN8eneIMVxmlsaMiIiIB9i3fSNlC0eR6twKwKpWN9Bn7EsEBoUYLjNPY0ZERMTN5X4yh64rH6StVc5xGrL7oudJufR601luQ2NGRETETZ0sLyV/9gRSjywCCzYHxtJ41Dx6RXcxneZWNGZERETc0J6ta6l8J51U5w4AVkaNInH08wQEBRsucz8aMyIiIm4m+58zic15hAbWSY4Rwd6BL5E68CrTWW5LY0ZERMRNlJeWsHb2H0g59k+wYGNQT5qnzyeuTUfTaW5NY0ZERMQN7Nq8Gvtv6aS4duOyLbKix5A0+ln8AwJNp7k9jRkRERHDsj6YQY/VTxJmVXCESAoHvULqRcNMZ3kMjRkRERFDSk8Us2H2LSQX/xss2BDcm1aj59O9dTvTaR5FY0ZERMSAHRuz8XtvDMmuvThti5wOt5A4cir+AXpqPld6xEREROqR7XKRtegvxK19mlCrkkM05tDlr5KSNsR0msfSmBEREaknJY5jbJo1npQTX4AF60ISaDNmHrEt25pO82gaMyIiIvVg29oVBC0aS5J9gGrbj5xOt5N805P4+fubTvN4GjMiIiJ1yHa5WPXeC8RvmE6wVUURTTg65A1Sky83neY1NGZERETqiKP4KFtnjSG1ZAlYsCY0hfZjM4lp3tp0mlfRmBEREakDW/O/JfTD8STYhVTZ/uR1uZPkGx7B8tNlpdqmMSMiIlKLbJeLle88Q8KWFwiyqimkOcVD3yQl8VLTaV5LY0ZERKSWFB89zPbZo+lb9i1YkB+WRqdxmbRq2sJ0mlfTmBEREakFm3O/JuKjW+hjF1Fp+7M6ZgrJ1z6E5ednOs3racyIiIicB5fTxaq//onErX8m0HJywGpJ2bDZpMQPMJ3mMzRmREREauj44YPszEinb/kKsCCv4cVcMH4OUY2amk7zKRozIiIiNbAp63Ma/+sPxHOYSjuA/O73kXTVvbqsZIDGjIiIyDlwOZ2sXPAYyTteJcBysc9qTeWIt0iOSzOd5rM0ZkRERM7SkaL97HsrnbST2WBBbsSldBufQcOIxqbTfJrGjIiIyFnYsOITmn96O704ykk7kHVxD5H4+0m6rOQGNGZERETOwFldzap5D5Oy+038LZs9fm1wXTmHpO4pptPkPzRmREREfsahwj0UzhlFWsVqsCAn8nJib55JWMNGptPkf2jMiIiI/IR13y6m9ZcT6clxyu0gNsQ/SuLwiaaz5CdozIiIiPyP6qoqsjMfIGVvBn6WzS6/dljXzCUxJsF0mvwMjRkREZH/KNq/i6LMkfStXAsWZDceQs+b3yQkLNx0mpyBxoyIiAiwZsn7RC+ZRA8clNnBbEp8kqShfzCdJWdBY0ZERHxaVVUlOXPuoe+BTAB2+Hcg8NpMErr2NhsmZ01jRkREfFbh3u0cnTeSvlUbAMhqOpy4ca8SEtbQcJmcC40ZERHxSflfvkv7b+8mlhOU2KEUpEwl+YqxprOkBjRmRETEp1RWVJDz1mTSDr4NwDb/zoTeMI8+nXsYLpOa0pgRERGfcWDXFhwLRpFWvRmAVc2vove4VwgOCTNcJudDY0ZERHxC3mcL6Lz8PqIoxUEY2/tOJ+XyUaazpBZozIiIiFerqChn9ew7ST30NwAKAroSftN84jvEGC6T2qIxIyIiXmv/jo2UvT2KVOdWAFa1up4+Y18mMCjEcJnUJo0ZERHxSrmfzKXrygdoY5VTTAN2XfQCKZdebzpL6oDGjIiIeJWT5aXkZ9xB6uF/gAWbA2NpPHIevdp1MZ0mdcTPdMCZVFdX88c//pGOHTsSGhpKp06dePLJJ3G5XKbTRETEDe3ZupZ9z1/0w5ABVkaN4oJ7l9BSQ8arufWZmenTp/PGG2+QmZlJ9+7dycnJYcyYMURGRnLXXXeZzhMRETeS89EsYrIfoaFVzjEi2DvwJVIHXmU6S+qBW4+ZFStWMGzYMIYMGQJAhw4d+Otf/0pOTo7hMhERcRflpSWszbiNlKOLwYKNQT1pnj6fuDYdTadJPXHry0z9+/fnyy+/pKCgAIA1a9awbNkyrrjiip/9mYqKChwOx2kfIiLinXZvWc33L/Qj5ehiXLbFyrZj6Xbf1zTXkPEpbn1m5v7776e4uJiYmBj8/f1xOp08/fTTXH/9z9+NPm3aNJ544ol6rBQREROyPniN7qsfp4FVwREi+X7QX0i9aLjpLDHArc/MvPvuuyxYsICFCxeSl5dHZmYmzz//PJmZmT/7Mw8++CDFxcWnPvbu3VuPxSIiUtfKSorJevl6kvMfpIFVwfrg3ti3fksPDRmfZdm2bZuO+DnR0dE88MADTJgw4dSxp556igULFrB58+az+jMcDgeRkZEUFxcTERFRV6kiIlIPdmzMxu+9MXRw7cVpW2S3v4WkUVPxD3DrCw1SA+fy/O3W//TLysrw8zv95JG/v7/+araIiI+xXS6yFr1C3NqnCLUqOURjDl3+KqlpQ0yniRtw6zEzdOhQnn76adq1a0f37t1ZvXo1L774ImPHjjWdJiIi9aTkxHE2zxpHiuMLsGBdSAJtxswjtmVb02niJtz6MtOJEyd45JFHWLRoEUVFRURFRXH99dfz6KOPEhQUdFZ/hi4ziYh4rm3rVhD0j7G0sw9QbfuR0+l2km96Ej9/f9NpUsfO5fnbrcdMbdCYERHxPLbLxar3XiR+wzMEW1UU0YSjv3mDmJTLTadJPfGae2ZERMT3OIqPUjBrLKklX4MFa0JTaD82k5jmrU2niZvSmBEREbexNf9bQj8cT6JdSJXtT16XO0m+4REsP11Wkp+nMSMiIsbZLher3p1On83PE2RVU0hzioe+SUripabTxANozIiIiFHFRw+zffZoUsu+BQvyw9LoNC6TVk1bmE4TD6ExIyIixmzJ/Zrwj26hj11Epe3P6pgpJF/7EJafW79AvbgZjRkREal3LqeLVX99ioStLxNkOTlgtaRs2GxS4geYThMPpDEjIiL16vjhg+zMSKdv+QqwYHXDAXQeP4eoRs1Mp4mH0pgREZF6synrcxr/6w/Ec5hKO4D87veRdNW9uqwk50VjRkRE6pzL6WTl24+TvH0GAZaLfVZrKkZkkBzXz3SaeAGNGRERqVNHivaz76100k5mgwW54b+i280ZNIxoYjpNvITGjIiI1JkNKz6h+ae304ujnLQDWRf3EIm/n6TLSlKrNGZERKTWOZ1OVs17mJRdb+Bv2ezxa4PzyjkkdU8xnSZeSGNGRERq1aHCPRTOSSetIg8syIm8nNibZxLWsJHpNPFSGjMiIlJr1i9bTKsvJtKT45TbQayPf5Sk4RNNZ4mX05gREZHzVl1VRXbmA6TszcDPstnl1w7rmrkkxSSYThMfoDEjIiLn5dCB3RycexN9K9eCBdmNh9Bj/JuENgg3nSY+QmNGRERqbM2S94leMokeOCizg9mU+ARJQ28znSU+RmNGRETOWXVVJVlz7iV1fyZ+ls0O/w4EXptJQtfeptPEB2nMiIjIOSncu51j80aSVrUBLMhqOpy4ca8SEtbQdJr4KI0ZERE5a/lfvkv7b+/mQk5QYodSkPI0yVeMM50lPk5jRkREflFlRQW5cybTt/BtALb5dyb0hnn06dzDcJmIxoyIiPyCA7u24Fgwir7VmwFY1fwqeo97heCQMMNlIj/QmBERkZ+V99kCOi+/jyhKcRDG9r7TSbl8lOkskdNozIiIyI9UVJSTl3EXfYveBaAgoCsNb5xPfMcYw2UiP6YxIyIip9m/YxOlb4+ir7MAgJUtr6fP2JcJCg4xXCby0zRmRETklNxP5tJl5YO0scoopgG7+r9A6qDrTWeJnJHGjIiIcLK8lPyMO0g9/A+wYEvghTQaOZ9e7bqYThP5RRozIiI+bs/WdVS+k06qczsAK6NGkTj6eQKCgg2XiZwdjRkRER+W89EsYrIfoaFVzjHC2TfwZVIHXmU6S+ScaMyIiPig8tIS1mbcRsrRxWDBpqAeNEtfQM82HU2niZwzjRkRER+ze8tqnO+OJsW1C5dtkRU9hsT06QQEBplOE6kRjRkRER+S9cFrdF/9OA2sCo4QyfeD/kLqRcNNZ4mcF40ZEREfUFZSzPrZfyD5+L/Agg3BvWg5ej49Wrc3nSZy3jRmRES83M6NOVjvjSbZtRenbZHd/haSRk3FP0BPAeId9G+yiIiXsl0usha9Qtzapwi1KjlMI4ouf43UtCGm00RqlcaMiIgXKjlxnE2zxpPi+BwsWBeSQJsx84ht2dZ0mkit05gREfEy29atJOgfY0my9+O0LXI63U7STX/Cz9/fdJpIndCYERHxErbLxar3XiR+wzMEW1UU0YSjV7xOSsqvTaeJ1CmNGRERL+AoPkrBrLGklnwNFqwNTabd2HnENG9tOk2kzmnMiIh4uK353xL64c0k2t9TZfuT12UiyTc8iuWny0riGzRmREQ8lO1yserd6fTZ/DxBVjWFNKd46BukJA4ynSZSrzRmREQ8UPHRw2zLGE1q6bdgQX5YGp3GZdKqaQvTaSL1TmNGRMTDbMldQsOPbiHBPkil7c/qmCkkX/sQlp+f6TQRIzRmREQ8hO1ysfKvT5NQ8BJBlpMDVkvKhs0mJX6A6TQRozRmREQ8wPHDB9mZkU7f8hVgweqGA+g8fg5RjZqZThMxTmNGRMTNbcr6gkb/upV4DlNpB5Afex9JV9+ry0oi/6ExIyLiplxOJyvffpzk7TMIsFzss1pTMSKD5Lh+ptNE3IrGjIiIGzpadIC9b40i7WQ2WJAX/iu63pxBw4gmptNE3I7GjIiIm9mw4hOaf3o7vTjKSTuQdXEPkvj7ybqsJPIzNGZERNyE0+lk1byHSdn1Bv6WzR6/NriunENS9xTTaSJuTWNGRMQNHCrcQ+GcdNIq8sCCnMjLib15JmENG5lOE3F7GjMiIoatX/ZPWn1xBz05TrkdxIbej5I4/A6wLNNpIh5BY0ZExBBndTWrMh8gZc9s/C2b3X7RWNdkkhiTYDpNxKNozIiIGHDowG4Ozh1JWuUasCC78RB63vwmIWHhptNEPI7GjIhIPVu7dBFtvr6LHhRTZgezKfEJkobeZjpLxGNpzIiI1JPqqkqy5t5H6r65+Fk2O/w7EHhtJglde5tOE/FoGjMiIvWgcO92js4bRVrVerAgq+kw4sa9RkhYQ9NpIh5PY0ZEpI6t+epd2n1zN7GcoMQOpSD5KZKHjDedJeI1NGZEROpIVWUFOW9Npm/h2wBs9+9MyA3z6NO5h+EyEe+iMSMiUgcO7C7AMX8Ufas3AZDV/Cp6jfsLwSENDJeJeB+3f6OP/fv3c9NNN9G0aVPCwsLo3bs3ubm5prNERH5W3udv02DOQGKqN+EgjPy+fyF5QoaGjEgdceszM8eOHaNfv35ccsklfPLJJ7Ro0YLt27fTqFEj02kiIj9SUVFOXsZd9C16F4CCgK40vHEevTteaLhMxLu59ZiZPn060dHRzJkz59SxDh06nPFnKioqqKioOPW5w+GoqzwRkVP279hE6cJR9K0uAGBVy2uJH/sXgoJDDJeJeD+3vsy0ePFiEhMTufrqq2nRogXx8fHMmjXrjD8zbdo0IiMjT31ER0fXU62I+KrcTzIJz/wVXasLKKYBa/q/TsptMzVkROqJZdu2bTri54SE/PCLYMqUKVx99dVkZWUxadIk3nzzTUaNGvWTP/NTZ2aio6MpLi4mIiKiXrpFxDecLC9ldcZE+h5+H4AtgRfSaOQ8WrbrarhMxPM5HA4iIyPP6vnbrcdMUFAQiYmJLF++/NSxO++8k+zsbFasWHFWf8a5PBgiImdrz9Z1VLyTThfndgBWtR5JwpgXCAgKNlwm4h3O5fnbrS8ztW7dmtjY2NOOXXjhhezZs8dQkYgIZH80myYLLqOLczvHCWfdxbNJuXWGhoyIIW59A3C/fv3YsmXLaccKCgpo3769oSIR8WXlpSWsybid1KMfggWbArvTbPQCerbpZDpNxKe59ZiZPHkyaWlpTJ06lWuuuYasrCxmzpzJzJkzTaeJiI/ZvSUf57vppLp24bItsqLHkJg+nYDAINNpIj7Pre+ZAfjoo4948MEH2bp1Kx07dmTKlCncfPPNZ/3zumdGRM5X1oev0z3vMRpYFRwhku8v/Qs9LhpuOkvEq3nNDcC1QWNGRGqqrNTBulm3knL8XwBsCO5Fy9HzadZal7pF6tq5PH+79WUmERFTdmzMwXpvDCmuPbhsi+z2N5M4ahr+Afq1KeJu9F+liMj/sG2brEWvELfmT4RalRymEUWXv0pK2m9Np4nIz9CYERH5j5ITx9k46xZSHJ+CBetD+hA1Zh6xLfVK4iLuTGNGRATYtm4lgf8YR7K9D6dtkdPpdpJu+hN+/v6m00TkF2jMiIhPs10uVr3/Er3XTyPEqqKIJhy94nVSUn5tOk1EzpLGjIj4LEfxUQpmjSO15CuwYG1oMu3GziOmeWvTaSJyDjRmRMQnFeQvI+zD8STa31Nt+5Hb5U6Sb3gUy0+XlUQ8jcaMiPgU2+VixbvPkrj5OYKsagppTvHQN0hJHGQ6TURqSGNGRHxG8dHDbMsYQ1rpN2BBflgancZl0qppC9NpInIeajxmnE4nixYtYtOmTViWRUxMDMOHDydALyglIm5oc+4Swj+6hQT7IJW2P/ndJpN03cNYfn6m00TkPNVoeaxfv55hw4ZRWFhIt27dgB/ezbp58+YsXryYnj171mqkiEhNuZwuVr7zFIkFLxNkOfneakHpsAyS4weYThORWlKjMTN+/Hi6d+9OTk4OjRs3BuDYsWOMHj2aW265hRUrVtRqpIhITRw/fJAdGaNJK18OFqxuOIDO4+fQulEz02kiUotqNGbWrFlz2pABaNy4MU8//TRJSUm1FiciUlMbs76k8b9uoQ+HqbQDyI+9j6Sr79VlJREvVKMx061bNw4ePEj37t1PO15UVMQFF1xQK2EiIjXhcjpZ+fYTJG2fQaDlZL/VipMjMkiO6286TUTqSI3GzNSpU7nzzjt5/PHHSU1NBWDlypU8+eSTTJ8+HYfDcep7f+ltu0VEasuRogPsfWs0aSdXgQV54ZfQ9ea3aBPRxHSaiNQhy7Zt+1x/yO9/TtNalgX88E6z//dzy7JwOp210VljDoeDyMhIiouLNaxEvNiGFf+m2ae30ZKjVNiBrI17kMTfT9ZlJREPdS7P3zU6M/P111/XKExEpLY5nU5WznuElF2vE2C52OPXBteVc0jqnmI6TUTqSY3GzMUXX1zbHSIi5+zQwb18/1Y6/SpywYKcyMHE3jyLsIaNTKeJSD06r1e4KysrY8+ePVRWVp52PC4u7ryiRER+ybplH9HqizuI4xjldhDrez9K0vA74D+XukXEd9RozBw6dIgxY8bwySef/OTXTd8nIyLeq7qqiqx5D5KyZzb+ls1uv2isa+aSFJNoOk1EDKnRnXGTJk3i2LFjrFy5ktDQUP7973+TmZlJly5dWLx4cW03iogAcOj7PWx6bhBpe2fhb9lkNx5Cy3tW0E5DRsSn1ejMzFdffcWHH35IUlISfn5+tG/fnssuu4yIiAimTZvGkCFDartTRHzcmqWLaPv1XfSkmDI7mE0JT5D0u9tMZ4mIG6jRmCktLaVFix/eZbZJkyYcOnSIrl270rNnT/Ly8mo1UER8W1VVJdlz7yN131z8LJud/h0IuDaThK69TaeJiJuo8SsAb9myhQ4dOtC7d2/efPNNOnTowBtvvEHr1q1ru1FEfFThvh0cyRxJWtV6sCCr6TDixr1GSFhD02ki4kZqNGYmTZrE999/D8Bjjz3G5ZdfzoIFCwgKCiIzM7NWA0XEN63+6u+0/2Yy3TlBiR1KQfJTJA8ZbzpLRNxQjV4B+P8qKytj8+bNtGvXjmbN3OvdaPUKwCKepbKiguw5d9OvcD4A2/07E3JDJm069zRcJiL1qc5fAXjKlCk/edyyLEJCQrjgggsYNmwYTZro/VBE5Owd2F1A8fxR9KveBEBW8yvpNe4VgkMaGC4TEXdWozMzl1xyCXl5eTidTrp164Zt22zduhV/f39iYmLYsmULlmWxbNkyYmNj66L7rOnMjIhnyPt8IZ2+u5dGlOAgjB19n6H35emms0TEkHN5/q7R68wMGzaMQYMGceDAAXJzc8nLy2P//v1cdtllXH/99ezfv58BAwYwefLkGv0fEBHfUVFRzvLXbqXPd7fRiBK2BnShJP0rDRkROWs1OjPTpk0bPv/88x+dddmwYQODBw9m//795OXlMXjwYA4fPlxrsTWhMzMi7mv/jk2ULBxFt+oCAFa1vJb4sX8hKDjEcJmImFbnZ2aKi4spKir60fFDhw7hcDgAaNSo0Y/es0lE5L9yP8kkPPNXdKsuoJgGrOn/Oim3zdSQEZFzVqMbgIcNG8bYsWN54YUXSEpKwrIssrKyuOeeexg+fDgAWVlZdO3atTZbRcQLnCwvY3XGHfQ9/D5YsCUwhkYj59OrnX5fiEjN1OgyU0lJCZMnT2bevHlUV1cDEBAQQHp6Oi+99BINGjQgPz8fgN69e9dm7znTZSYR97Fn6zoq3kmni3M7AKtaj6TPmBcIDAo2XCYi7uZcnr/P63VmSkpK2LFjB7Zt07lzZxo2dL9X5dSYEXEP2R/P5sKsP9LQKuc44ey9+CV6XnK16SwRcVN1/joz/9WwYUPi4uLO548QES9XXlrCmozbST36IViwKbA7zUYvoGebTqbTRMRLnNeYERE5k90Fa6h+J51U105ctkVW9BgS06cTEBhkOk1EvIjGjIjUiVUfvkGPvEdpYFVwlAgODHqF1IuGm84SES+kMSMitaqs1MG6WX8g5fjHYMGG4F60HD2fHq3bm04TES+lMSMitWbnxlx4bzQprj24bIvs9uNJHPUM/gH6VSMidUe/YUTkvNm2TdaiV+i55inCrAoO04iiwTNI6TfUdJqI+ACNGRE5LyUnjrNx1i2kOD4FC9aH9CFqzDxiW0abThMRH6ExIyI1tm39KgLfH0uyvQ+nbZHT6XaSbvoTfv7+ptNExIdozIjIObNdLla+/zLx66cSYlVRRBOOXfE6KSm/Np0mIj5IY0ZEzomj+ChbZo+j74mvwIJ1oclEj51Ht+atTaeJiI/SmBGRs7Z1zXJCPhhHkn2AatuP3C53knzDo1h+uqwkIuZozIjIL7JdLlb+7Vn6bHqeYKuKQqs5jt++SUripabTREQ0ZkTkzIqPHWHb7NH0Lf0GLMgPS6PTuExaNW1hOk1EBNCYEZEz2Jy3lPB/3kyCfZBK25/8mCkkXfsQlp+f6TQRkVM0ZkTkR2yXixV/nUpiwYsEWU6+t1pQOiyD5PgBptNERH5EY0ZETnP8SBE7MkaTVvYdWLC64UVcMH4urRs1M50mIvKTNGZE5JRNWV/S6F+30odDVNoBrOl+H4lX3avLSiLi1jRmRASX08nKt58gafsMAi0n+61WVIx4i6S4fqbTRER+kcaMiI87cuh79makk3ZyFViQF34JXW9+i4YRTUyniYicFY0ZER+2YcW/afbp7fTmCBV2IOviHiLh95N0WUlEPIrGjIgPcjqdrJr/CMk7XyfAcrHXrw3OK+eQ2D3FdJqIyDnTmBHxMYcO7uX7t9JJq8gFC3IjB3PhzbMIa9jIdJqISI1ozIj4kHXLPqLVF3cQxzHK7SA29H6ExOETwbJMp4mI1JjGjIgPqK6qImveQ6TsmYW/ZbPbLxrrmkwSYxJMp4mInDeNGREvV3RgDwfnjiStMh8syGl8BT3Gv0lIgwjTaSIitUJjRsSLrVm6iDZfT6Inxymzg9mU8ASJv7vNdJaISK3yqL9/OW3aNCzLYtKkSaZTRNxaVVUly2dNoudXY2jGcXb6d+DIjZ+RoCEjIl7IY87MZGdnM3PmTOLi4kyniLi1wn07OJI5krSq9WBBdtNh9Bz3GiFhDU2niYjUCY84M1NSUsKNN97IrFmzaNy48Rm/t6KiAofDcdqHiK9Y/dXfCZo9gO5V6ym1Q1id/AJJE+dpyIiIV/OIMTNhwgSGDBnCoEGDfvF7p02bRmRk5KmP6OjoeigUMauyooLv3riD+G/G04QTbPfvxPFRXxB/xXjTaSIidc7tLzO988475OXlkZ2dfVbf/+CDDzJlypRTnzscDg0a8WoHdm+leP5I+lVvAiCr+ZX0GvcKwSENDJeJiNQPtx4ze/fu5a677uKzzz4jJCTkrH4mODiY4ODgOi4TcQ+5ny2k8/J7iaKEE4Syve8zJF8+2nSWiEi9smzbtk1H/JwPPviA3//+9/j7+5865nQ6sSwLPz8/KioqTvvaT3E4HERGRlJcXExEhF5XQ7xDRUU5uRmTSCt6B4CtAV1oeNN8Wne40HCZiEjtOJfnb7c+M3PppZeybt26046NGTOGmJgY7r///l8cMiLeaN/OzZS+PZK06gIAslpeR/y4PxMYdHZnL0VEvI1bj5nw8HB69Ohx2rEGDRrQtGnTHx0X8QU5n2TSZeWDtLVKcdCAXf2fI3nQjaazRESMcusxIyI/OFleRl7GRNIOvwcWbAmMofGo+cRFdzWdJiJinMeNmSVLlphOEKlXe7at5+Rf00lzbgMgq/WN9BnzEgFButFdRAQ8cMyI+JKsj2YTm/1HGlrlHCecvRe/SPIl15jOEhFxKxozIm6ovKyU/Nm30ffoh2DB5qBYmqa/Tc82nUyniYi4HY0ZETezu2AN1e+k09e1E4BVbUeTOPp5/AMCDZeJiLgnjRkRN7LqwzfokfcoDawKjhJB4a/+TMqAEaazRETcmsaMiBsoK3WwdtYfSD3+MViwMbgXLUfPJ7Z1e9NpIiJuT2NGxLAdm3Lh72NIde3GZVvktB9Pwqhn8A/Qf54iImdDvy1FDLFtm1WLZhC35k+EWRUcoRFFg18hud/vTKeJiHgUjRkRA0pOFLNx1s2kOj4FCzYEx9N67DwubNnOdJqIiMfRmBGpZ9vWryLw/bEk2/tw2hY5HW8j6aY/4afLSiIiNaLfniL1xHa5WPn+y8Svn0qIVcUhmnD0ildJSbnCdJqIiEfTmBGpB47io2yZPZ6+J74EC9aHJtJ27Hy6NY8ynSYi4vE0ZkTqWMGa7wj9YDxJ9gGqbT/yLriDpBsfx/LzN50mIuIVNGZE6ojtcrHib8+RsOk5gq0qDlpNcfz2TZITLzOdJiLiVTRmROpA8bEjbJ09hrTSpWDB2rBUOoyfR8smLU2niYh4HY0ZkVq2OW8p4f+8mUT7IFW2P/ndJpF43R+x/PxMp4mIeCWNGZFa4nK6WPHOVJIKXiTIcvK91ZzS380mqc9A02kiIl5NY0akFhw/UsSOjNH0K/sOLMhv0J/ON8+ldaPmptNERLyexozIedqY/SWNP76VPhyi0g5gTew9JF59vy4riYjUE40ZkRpyOZ2sePtJkre/QqDl5IDVipO/zyCpV3/TaSIiPkVjRqQGjhz6nj0Z6fQ7uQosWB0+kC7j5xAV2cR0moiIz9GYETlH61d8SvNPbyOeI1TYgazv+QB9RkzRZSUREUM0ZkTOktPpZOW8R0jZ9ToBlot9flE4r5xDQvdU02kiIj5NY0bkLBw6uJcDb6XTryIXLMiLHETM+NmEhTc2nSYi4vM0ZkR+wdplH9P6iwn04hgn7UA29H6EhOF3gmWZThMRETRmRH5WdVUVqzIfInXvLPwtm91+0VhXzyXhwkTTaSIi8j80ZkR+QtGBPRTOHUm/ynywIKfxFfQY/yYhDSJMp4mIyP+hMSPyf+Qv/YC2X99FHMcps4PZnPg4iUNvN50lIiI/Q2NG5D+qqirJmnMffffPxc+y2eXXnoDr5tGna2/TaSIicgYaMyLA9/t2cDRzJP2q1v9wWanJUHqMf52QsHDTaSIi8gs0ZsTnrf7y77T/djLdOUGpHcLW5D+ROOQW01kiInKWNGbEZ1VWVJA95276Fc4HYId/R0Kun0/vC3oaLhMRkXOhMSM+6cDurRTPH0m/6k0AZDcfQa9xrxIUEma4TEREzpXGjPic3M8W0nn5vURRwglC2ZE6jaRfjzGdJSIiNaQxIz6joqKc3NmTSDv0DgDbAi6gwY3z6dUx1nCZiIicD40Z8Qn7dmymZOEo0qq3AJDd6lp6j/kzgcGhhstEROR8acyI18v+ZB5dVz5AW6sUBw3Y3f85kgbdaDpLRERqicaMeK2T5WXkZUwk7fB7YEFBYDcajZxPz3bdTKeJiEgt0pgRr7R723oq/ppOmnMbANmtbyR+zIsEBIUYLhMRkdqmMSNeZ9VHGcRmP0y4Vc5xGrL/4hdJuuRa01kiIlJHNGbEa5SXlbJ69u2kHf0ALNgc1J1m6fPp3qaz6TQREalDGjPiFXZtWYPz3XTSXDsByGo7moT05/APDDJcJiIidU1jRjyabdusWvwmPfMeo4F1kmNE8P2lfyb5ohGm00REpJ5ozIjHKi1xsG72H0g9/jFYsCk4jhajFxDbur3pNBERqUcaM+KRtm/MxXpvDKmu3bhsi9z240gY9Qx+AYGm00REpJ5pzIhHsW2blYtepdeaJwmzKjhCIw4NfoWkfr8znSYiIoZozIjHOOE4zsbZt9DX8SlYsCEknqgx84lpGW06TUREDNKYEY+wdV0WQf8YQ4q9D6dtkdfpDyTc+BR+AfpXWETE1+mZQNya7XKx4v2X6bN+KiFWFYdowtErXiMp5Tem00RExE1ozIjbKj5+lC2zx5NW8iVYsD40iehx8+jWLMp0moiIuBGNGXFLW/K/I/TD8STbB6i2/cjvcgcJNzyO5edvOk1ERNyMxoy4FdvlYvnfniNx03MEW1UctJri+O2bJCZeZjpNRETclMaMuI3jxw6zdfY4+pUuAQvWhqXSYfw8WjZpaTpNRETcmMaMuIVNuUuJ+OfNJHGQKtufNTGTSLj2j1h+fqbTRETEzWnMiFEup4vl70wlueBFgiwnhVZzSofNJjF+oOk0ERHxEBozYszRwwfZkTGG/uXfgQVrGvan8/hMWjVqZjpNREQ8iMaMGLEh60sa/+tWEjlEpe3Puu730ueq+3VZSUREzpnGjNQrl9PF8refIGX7KwRaTg5YragcMZuEuItMp4mIiIfSmJF6c7joe/a+lU7/k6vAgvyIgXQZN4cGkU1Mp4mIiAfTmJF6sW75v2n+2QTiOUyFHcj6uAdIGHE3WJbpNBER8XBufYPCtGnTSEpKIjw8nBYtWjB8+HC2bNliOkvOgdPpZNmch7jw0+tpxWH2+UVReM1HJFx5j4aMiIjUCrceM0uXLmXChAmsXLmSzz//nOrqagYPHkxpaanpNDkLRYX7WPfsYPrvfpUAy8XqyMtoOnkF7bunmk4TEREvYtm2bZuOOFuHDh2iRYsWLF26lAEDBpzVzzgcDiIjIykuLiYiIqKOC+W/1iz7mNZf3EELjnLSDmRT/KPED5uoszEiInJWzuX526PumSkuLgagSZOfv2G0oqKCioqKU587HI4675L/r7qqihXzHiZtz0z8LZs9ftFY18wlPibRdJqIiHgpt77M9L9s22bKlCn079+fHj16/Oz3TZs2jcjIyFMf0dHR9Vjp2w4e2M3G5wZx0d438bds8hr/hhZ3LydaQ0ZEROqQx1xmmjBhAh9//DHLli2jbdu2P/t9P3VmJjo6WpeZ6tjqJYuIXnIXzSimzA6mIPFxeg+93XSWiIh4KK+7zDRx4kQWL17MN998c8YhAxAcHExwcHA9lUlVVRUr59xPv/1v4WfZ7PJvT+B18+jdpbfpNBER8RFuPWZs22bixIksWrSIJUuW0LFjR9NJ8j/279nBsfmjuKhqHViQ23QoPca/TnBouOk0ERHxIW49ZiZMmMDChQv58MMPCQ8Pp7CwEIDIyEhCQ0MN1/m2nC//Tqdvp9AGB6WEsC35KRKuuNl0loiI+CC3vmfG+pm/xjtnzhxGjx59Vn+G/mp27aqorCD7rbvpXzgfgB3+nQi9YR6tO/c0XCYiIt7Ea+6ZceOd5ZP27SrAsSCd/tUbAchtPoKe414lKCTMcJmIiPgytx4z4j6yP/0rXZbfQ1urhBOEsqvvNBIuH2M6S0RERGNGzuzkyZPkZNxF/0PvgAXbA7rQ8Kb59Oxwoek0ERERQGNGzmDP9k2ULUynv/OHN/fMaXUNvcb8hcBg3XwtIiLuQ2NGftKqf2USs+pB2lmlOGjAnoueJ/HSG0xniYiI/IjGjJymvKyM3IyJ9D/yHliwNTCGRqPm0yO6q+k0ERGRn6QxI6fsKlhH5buj6e/cBkBO1I3Ej3kJ/0C9orKIiLgvjRkBYMXi2fTI/SPhVjnHaciBgS+ROPAa01kiIiK/SGPGx5WWlpA/+3b6HfsQLNgS1J1m6QuIbdPJdJqIiMhZ0ZjxYds352P/bTT9XDsByI0eTe9Rz+EfGGS4TERE5OxpzPgg27ZZ8eGb9Fr9GA2skxwjgoOX/pmEi0aYThMRETlnGjM+5sSJYtbNvo204o/Bgs3BPWk5egExrTuYThMREakRjRkfsnV9Dv7vjyHN3oPLtsjrMI4+I5/BLyDQdJqIiEiNacz4ANu2+e79V+iz7inCrAqO0Igjv36FxL6/M50mIiJy3jRmvFxx8XE2zr6F/ic+BQs2hcQTNXY+XVtEm04TERGpFRozXmzzmlUEfzCWvvY+nLZFfufb6HPjn7D89Y9dRES8h57VvJDtcvHt318ieeM0QqwqDluNOX7FGyQk/9p0moiISK3TmPEyx48dZfPs8Qwo/RIs2BCWRPTYeVzQLMp0moiISJ3QmPEiG1cvo8Him0m1D1Bt+7G220Tir3sMy8/fdJqIiEid0ZjxAi6ni2/feY7UgucItqoosppS+rs36dPnMtNpIiIidU5jxsMdPXKIrRnjuLhsKViwvkFfOoyfR4vGLUyniYiI1AuNGQ+2LnsJjT++hRQOUmX7syF2Mr2ufhjLz890moiISL3RmPFATqeLb99+mr7bXybYqqbQakHF72fRu9dA02kiIiL1TmPGwxw6VMiujLEMPPkdWLAu/CI6j59LWGQz02kiIiJGaMx4kPwVX9D809tIoohK25+NPe6j91X3g2WZThMRETFGY8YDVFc7WbbgCfrtnEGg5eSAXyucI96id49+ptNERESM05hxcwcLD7BvzmgGVqwCC9ZGXkLX8XMICW9sOk1ERMQtaMy4sdxl/ybqiwkkcJgKO5AtvR8kbvgUXVYSERH5HxozbqiqupplmY9w0Z43CLBc7PeLgqvnEndhiuk0ERERt6Mx42YO7N9DYeZoLqnM/eGyUuPL6DpuNiENG5lOExERcUsaM24ka8k/ab9kIn04xkkC2ZbwKHG/najLSiIiImegMeMGKior+W7OQ1x8YDb+ls1e/2gCr5tHjy59TKeJiIi4PY0Zw/bs2cWR+en8qir/h8tKza4gZuxMgsLCTaeJiIh4BI0Zg5Z/8Q+6fjuJdlYx5QSzM+UJ4n5zm+ksERERj6IxY8DJikq+y7iPSw7Oxc+y2RPQgdAbMont1Nt0moiIiMfRmKlnO3duxfH2GC6tXvfDZaUWw4gd+xoBIQ1Np4mIiHgkjZl69O0n7xK78h46Wg5KCWFf2jTiBo81nSUiIuLRNGbqQWn5SVbMnsKgI2+DBbsDO9HwpgV0a9/ddJqIiIjH05ipY1u3bqH8ndEMcm4EYF3rq4gdMwP/oFDDZSIiIt5BY6aO2LbNko/epnfOAzS2TlBCGN8PmE7PX40ynSYiIuJVNGbqgKO0jFWzJ3HZsXfBgp1BXWg86m26tO1mOk1ERMTraMzUsk2b1uP8+1guc20BYH3b64kd9TJ+QSGGy0RERLyTxkwtsW2bLxfNIXHNH2lkleKgAYd/9QI9BlxvOk1ERMSraczUguMnSsiZNZFBjn/8cFkpOIamoxfSqXVn02kiIiJeT2PmPK1bv4aA98cyyN4GwIYOo4i96XmsgGDDZSIiIr5BY6aGXC6bz9+fRdr6Rwm3yikmnOOD/0z3tCtNp4mIiPgUjZkaWvLGnVxeNA8s2B7ag1ZjF9K+eXvTWSIiIj7Hz3SAp2ofNwCXbbGx0zg63f01DTRkREREjNCZmRrq3P9qTnToTmzbWNMpIiIiPk1nZs5DuIaMiIiIcRozIiIi4tE0ZkRERMSjacyIiIiIR9OYEREREY+mMSMiIiIeTWNGREREPJrGjIiIiHg0jRkRERHxaBozIiIi4tE0ZkRERMSjacyIiIiIR9OYEREREY+mMSMiIiIeLcB0QF2zbRsAh8NhuERERETO1n+ft//7PH4mXj9mTpw4AUB0dLThEhERETlXJ06cIDIy8ozfY9lnM3k8mMvl4sCBA4SHh2NZlukcn+FwOIiOjmbv3r1ERESYzvEpeuzN0WNvjh57M+rycbdtmxMnThAVFYWf35nvivH6MzN+fn60bdvWdIbPioiI0C8WQ/TYm6PH3hw99mbU1eP+S2dk/ks3AIuIiIhH05gRERERj6YxI3UiODiYxx57jODgYNMpPkePvTl67M3RY2+GuzzuXn8DsIiIiHg3nZkRERERj6YxIyIiIh5NY0ZEREQ8msaMiIiIeDSNGak106ZNIykpifDwcFq0aMHw4cPZsmWL6SyfNG3aNCzLYtKkSaZTfML+/fu56aabaNq0KWFhYfTu3Zvc3FzTWV6vurqaP/7xj3Ts2JHQ0FA6derEk08+icvlMp3mdb755huGDh1KVFQUlmXxwQcfnPZ127Z5/PHHiYqKIjQ0lIEDB7Jhw4Z669OYkVqzdOlSJkyYwMqVK/n888+prq5m8ODBlJaWmk7zKdnZ2cycOZO4uDjTKT7h2LFj9OvXj8DAQD755BM2btzICy+8QKNGjUyneb3p06fzxhtvMGPGDDZt2sSzzz7Lc889xyuvvGI6zeuUlpbSq1cvZsyY8ZNff/bZZ3nxxReZMWMG2dnZtGrVissuu+zU+yPWNf3VbKkzhw4dokWLFixdupQBAwaYzvEJJSUl9OnTh9dee42nnnqK3r178/LLL5vO8moPPPAA3333Hd9++63pFJ/z29/+lpYtW5KRkXHq2JVXXklYWBjz5883WObdLMti0aJFDB8+HPjhrExUVBSTJk3i/vvvB6CiooKWLVsyffp0br311jpv0pkZqTPFxcUANGnSxHCJ75gwYQJDhgxh0KBBplN8xuLFi0lMTOTqq6+mRYsWxMfHM2vWLNNZPqF///58+eWXFBQUALBmzRqWLVvGFVdcYbjMt+zcuZPCwkIGDx586lhwcDAXX3wxy5cvr5cGr3+jSTHDtm2mTJlC//796dGjh+kcn/DOO++Ql5dHdna26RSfsmPHDl5//XWmTJnCQw89RFZWFnfeeSfBwcGMGjXKdJ5Xu//++ykuLiYmJgZ/f3+cTidPP/00119/vek0n1JYWAhAy5YtTzvesmVLdu/eXS8NGjNSJ+644w7Wrl3LsmXLTKf4hL1793LXXXfx2WefERISYjrHp7hcLhITE5k6dSoA8fHxbNiwgddff11jpo69++67LFiwgIULF9K9e3fy8/OZNGkSUVFRpKenm87zOZZlnfa5bds/OlZXNGak1k2cOJHFixfzzTff0LZtW9M5PiE3N5eioiISEhJOHXM6nXzzzTfMmDGDiooK/P39DRZ6r9atWxMbG3vasQsvvJD333/fUJHvuPfee3nggQe47rrrAOjZsye7d+9m2rRpGjP1qFWrVsAPZ2hat2596nhRUdGPztbUFd0zI7XGtm3uuOMO/vGPf/DVV1/RsWNH00k+49JLL2XdunXk5+ef+khMTOTGG28kPz9fQ6YO9evX70cvQVBQUED79u0NFfmOsrIy/PxOfxrz9/fXX82uZx07dqRVq1Z8/vnnp45VVlaydOlS0tLS6qVBZ2ak1kyYMIGFCxfy4YcfEh4efuo6amRkJKGhoYbrvFt4ePiP7k1q0KABTZs21T1LdWzy5MmkpaUxdepUrrnmGrKyspg5cyYzZ840neb1hg4dytNPP027du3o3r07q1ev5sUXX2Ts2LGm07xOSUkJ27ZtO/X5zp07yc/Pp0mTJrRr145JkyYxdepUunTpQpcuXZg6dSphYWHccMMN9RNoi9QS4Cc/5syZYzrNJ1188cX2XXfdZTrDJ/zzn/+0e/ToYQcHB9sxMTH2zJkzTSf5BIfDYd911112u3bt7JCQELtTp072ww8/bFdUVJhO8zpff/31T/5+T09Pt23btl0ul/3YY4/ZrVq1soODg+0BAwbY69atq7c+vc6MiIiIeDTdMyMiIiIeTWNGREREPJrGjIiIiHg0jRkRERHxaBozIiIi4tE0ZkRERMSjacyIiIiIR9OYEREREY+mMSMiIiIeTWNGRNzewIEDmTRp0o+Of/DBB1iWVf9BIuJWNGZERETEo2nMiIhXWLNmDZdccgnh4eFERESQkJBATk6O6SwRqQcBpgNERGrDjTfeSHx8PK+//jr+/v7k5+cTGBhoOktE6oHGjIh4hT179nDvvfcSExMDQJcuXQwXiUh90WUmEfEKU6ZMYfz48QwaNIhnnnmG7du3m04SkXqiMSMibi8iIoLi4uIfHT9+/DgREREAPP7442zYsIEhQ4bw1VdfERsby6JFi+o7VUQM0JgREbcXExPzkzfzZmdn061bt1Ofd+3alcmTJ/PZZ58xYsQI5syZU5+ZImKIxoyIuL3bb7+d7du3M2HCBNasWUNBQQGvvvoqGRkZ3HvvvZSXl3PHHXewZMkSdu/ezXfffUd2djYXXnih6XQRqQeWbdu26QgRkV+Sm5vLww8/zOrVqzl58iRdu3bl7rvv5rrrrqOyspL09HS+++47Dh48SLNmzRgxYgTPPfccISEhptNFpI5pzIiIiIhH02UmERER8WgaMyIiIuLRNGZERETEo2nMiIiIiEfTmBERERGPpjEjIiIiHk1jRkRERDyaxoyIiIh4NI0ZERER8WgaMyIiIuLRNGZERETEo/0/jDGtakN4da0AAAAASUVORK5CYII=", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "ds.gap.plot()\n", - "plt.plot(ds.Us, ds.Us)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "06e0d356-558e-40e3-8287-d7d2e0bee8cd", - "metadata": {}, - "source": [ - "We can also fit " - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "5499ea62-cf1b-4a13-8191-ebb73ea38704", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array(0.9997852)" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ds.gap.polyfit(dim=\"Us\", deg=1).polyfit_coefficients[0].data" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "0cb395cd-84d1-49b4-89dd-da7a2d09c8d0", - "metadata": {}, - "outputs": [], - "source": [ - "ds.to_netcdf(\"./data/1d_hubbard_example.nc\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ce428241", - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "```{code-cell} ipython3\n", - "def compute_phase_diagram(\n", - " Us,\n", - " nk,\n", - " nk_dense,\n", - " filling=2,\n", - "):\n", - " gap = []\n", - " vals = []\n", - " for U in tqdm(Us):\n", - " # onsite interactions\n", - " guess = utils.generate_guess(frozenset(h_int), len(list(h_0.values())[0]))\n", - " full_model = Model(h_0, h_int, filling)\n", - " mf_sol = solver(full_model, guess, nk=nk)\n", - " hkfunc = transforms.tb_to_kfunc(add_tb(h_0, mf_sol))\n", - " ks_dense = np.linspace(0, 2 * np.pi, nk_dense, endpoint=False)\n", - " hkarray = np.array([hkfunc(kx) for kx in ks_dense])\n", - " _vals = np.linalg.eigvalsh(hkarray)\n", - " _gap = (utils.compute_gap(add_tb(h_0, mf_sol), fermi_energy=0, nk=nk_dense))\n", - " gap.append(_gap)\n", - " vals.append(_vals)\n", - " return np.asarray(gap, dtype=float), np.asarray(vals)\n", - "\n", - "import xarray as xr\n", - "\n", - "ds = xr.Dataset(\n", - " data_vars=dict(vals=([\"Us\", \"ks\", \"n\"], vals), gap=([\"Us\"], gap)),\n", - " coords=dict(\n", - " Us=Us,\n", - " ks=np.linspace(0, 2 * np.pi, nk_dense),\n", - " n=np.arange(vals.shape[-1])\n", - " ),\n", - ")\n", - "\n", - "# Interaction strengths\n", - "Us = np.linspace(0.5, 10, 20, endpoint=True)\n", - "nk, nk_dense = 40, 100\n", - "gap, vals = compute_phase_diagram(Us=Us, nk=nk, nk_dense=nk_dense)\n", - "\n", - "ds.vals.plot.scatter(x=\"ks\", hue=\"Us\", ec=None, s=5)\n", - "plt.axhline(0, ls=\"--\", c=\"k\")\n", - "plt.xticks([0, np.pi, 2 * np.pi], [\"$0$\", \"$\\pi$\", \"$2\\pi$\"])\n", - "plt.xlim(0, 2 * np.pi)\n", - "plt.ylabel(\"$E - E_F$\")\n", - "plt.xlabel(\"$k / a$\")\n", - "plt.show()\n", - "\n", - "```\n", - "\n", - "The Hartree-Fock dispersion should follow (see [these notes](https://www.cond-mat.de/events/correl11/manuscript/Lechermann.pdf))\n", - "$$\n", - "\\epsilon_{HF}^{\\sigma}(\\mathbf{k}) = \\epsilon(\\mathbf{k}) + U \\left(\\frac{n}{2} + \\sigma m\\right)\n", - "$$\n", - "where $m=(\\langle n_{i\\uparrow} \\rangle - \\langle n_{i\\downarrow} \\rangle) / 2$ is the magnetization per atom and $n = \\sum_i \\langle n_i \\rangle$ is the total number of atoms per cell. Thus, for the antiferromagnetic groundstate, $m=1/2$ and $n=2$. The gap thus should be $\\Delta=U$. And we can confirm it indeed follows the expected trend.\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.13" - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "state": {}, - "version_major": 2, - "version_minor": 0 - } - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/codes b/examples/codes deleted file mode 120000 index f496e1c1ce26b6f6cb6504053420ebf88f11ea50..0000000000000000000000000000000000000000 --- a/examples/codes +++ /dev/null @@ -1 +0,0 @@ -../codes/ \ No newline at end of file diff --git a/examples/diatomic_molecule.ipynb b/examples/diatomic_molecule.ipynb deleted file mode 100644 index 24d47bfbde345405c68592860346e56bc7807063..0000000000000000000000000000000000000000 --- a/examples/diatomic_molecule.ipynb +++ /dev/null @@ -1,336 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "cb509096-42c6-4a45-8dc4-a8eed3116e67", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n", - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from codes.solvers import solver\n", - "from codes.tb import utils\n", - "from codes.model import Model\n", - "from codes.tb.tb import add_tb\n", - "from tqdm import tqdm" - ] - }, - { - "cell_type": "markdown", - "id": "2b76e5f0-75f0-4812-9a3a-39992f0244e7", - "metadata": {}, - "source": [ - "In this example, we will build a zero-dimensional model. Namely, we will find the Hartree-Fock groundstate solution for a diatomic molecule with onsite and nearest-neighbor interactions.\n", - "\n", - "We start by writing the non-interacting Hamiltonian. The minimal tight-binding model has the following Hamiltonian:\n", - "$$\n", - " H_0 = c_L^{\\dagger} c_R + h.c.\n", - "$$\n", - "which we can rewrite in following matrix representation:\n", - "$$\n", - "H_0 = \\left(c_L^{\\dagger}~c_R^{\\dagger}\\right) \\left(\\begin{array}{cc}\n", - " 0 & \\mathbb{1}\\\\\n", - " \\mathbb{1} & 0\n", - "\\end{array}\\right)\n", - "\\left(\\begin{array}{c}\n", - " c_L\\\\\n", - " c_R\n", - "\\end{array}\\right)\n", - "$$\n", - "where $\\mathbb{1}$ is a $2\\times 2$ identity matrix." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "d31cbfea-18ea-454e-8a63-d706a85cd3fc", - "metadata": {}, - "outputs": [], - "source": [ - "# Just writing the Hamiltonian above in numpy\n", - "# Here we add a dummy index to make the notation compatible with infinite systems.\n", - "h_0 = {(): np.kron(np.array([[0, 1], [1, 0]]), np.eye(2))}" - ] - }, - { - "cell_type": "markdown", - "id": "4c0d41ff-8231-441f-89a3-35f3fe94c57a", - "metadata": {}, - "source": [ - "We can naturally compute the eigenvalues for inspection." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "b39a2976-7c35-4670-83ef-12157bd3fc0e", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "hamiltonian_0 = h_0[next(iter(h_0))]\n", - "vals, vecs = np.linalg.eigh(hamiltonian_0)\n", - "plt.plot(vals, \"o\")\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "688558ce-cc8e-418e-846e-4e3e32cb3193", - "metadata": {}, - "source": [ - "We now move to an eigenvalue calculation of the Hartree-Fock solution. The workflow is rather simple:\n", - "* Run the self-consistent loop.\n", - "* Diagonalize the mean-field Hamiltonian." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "41bd9f60-8f29-4e7c-a0c4-a0bbf66445b2", - "metadata": {}, - "outputs": [], - "source": [ - "def compute_vals(\n", - " h_0,\n", - " h_int,\n", - " guess,\n", - " filling=2,\n", - "):\n", - " _model = Model(h_0, h_int, filling=filling)\n", - " mf_solution = solver(_model, mf_guess=guess, optimizer_kwargs={\"M\": 0})\n", - " ham_solution = add_tb(h_0, mf_solution)\n", - " # Diagonalize groundstate Hamiltonian.\n", - " vals, _ = np.linalg.eigh(mf_solution[()])\n", - " # Extract Fermi energy.\n", - " E_F = utils.calculate_fermi_energy(ham_solution, filling)\n", - " return vals - E_F" - ] - }, - { - "cell_type": "markdown", - "id": "9e580757-adad-4e20-b60c-cff8a85b633d", - "metadata": {}, - "source": [ - "And then we use this workflow to compute the phase diagram. We consider an interacting Hamiltonian with onsite and nearest-neighbor interactions:\n", - "\\begin{align}\n", - "H_{int} = \\sum_i U_i n_i n_i + \\sum_{\\langle i, j \\rangle} V_{ij} n_i n_j\\\\\n", - "= \\sum_i U_i n_{i\\uparrow} n_{i\\downarrow} + \\sum_{\\langle i, j \\rangle} V_{ij} n_i n_j\n", - "\\end{align}\n", - "where from the first to the second line we removed the terms that are not allowed by the exclusion principle. These are however taken care of by the algorithm, so we in fact just need to provide $U_i$ and $V_{ij}$. We simplify the Hamiltonian further as:\n", - "\\begin{align}\n", - "H_{int} = U \\sum_i n_{i\\uparrow} n_{i\\downarrow} + V \\sum_{\\langle i, j \\rangle} n_i n_j~.\n", - "\\end{align}\n", - "Thus, the we just need to pass to the algorithm the matrix\n", - "$$\n", - "H_{int} =\n", - "\\left(\\begin{array}{cccc}\n", - " U & U & V & V\\\\\n", - " U & U & V & V\\\\\n", - " V & V & U & U\\\\\n", - " V & V & U & U\n", - "\\end{array}\\right)~.\n", - "$$\n", - "\n", - "We thus sweep these parameters and see how the eigenvalues evolve." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "32b9e7c5-db12-44f9-930c-21e5494404b8", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "def compute_phase_diagram(\n", - " Us,\n", - " Vs,\n", - "):\n", - " _block = np.ones((2, 2))\n", - " # onsite interactions\n", - " onsite_int = np.kron(np.eye(2), _block)\n", - " # Nearest-neighbor interactions\n", - " nn_int = np.kron(\n", - " np.array([[0, 1], [1, 0]]),\n", - " _block\n", - " )\n", - "\n", - " vals = []\n", - " for U in tqdm(Us):\n", - " vals_U = []\n", - " for V in Vs:\n", - " h_int = {(): U * onsite_int + V * nn_int}\n", - " guess = utils.generate_guess(frozenset(h_int), 4)\n", - " try:\n", - " _vals = compute_vals(h_0, h_int, guess)\n", - " except:\n", - " _vals = np.zeros(4)\n", - " vals_U.append(_vals)\n", - " vals.append(vals_U)\n", - " return np.asarray(vals)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "6a8c08a9-7e31-420b-b6b4-709abfb26793", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 0%| | 0/20 [00:00<?, ?it/s]" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 20/20 [00:22<00:00, 1.10s/it]\n" - ] - } - ], - "source": [ - "# Interaction strengths\n", - "Us = np.linspace(0, 5, 20, endpoint=True)\n", - "Vs = np.linspace(0, 1, 20, endpoint=True)\n", - "vals = compute_phase_diagram(Us, Vs)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "e17fc96c-c463-4e1f-8250-c254d761b92a", - "metadata": {}, - "outputs": [], - "source": [ - "import xarray as xr\n", - "\n", - "ds = xr.Dataset(\n", - " data_vars=dict(\n", - " vals=([\"Us\", \"Vs\", \"n\"], vals),\n", - " ),\n", - " coords=dict(Us=Us, Vs=Vs, n=np.arange(vals.shape[-1])),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "070bc196-64c3-4040-9bb5-e9a216763eea", - "metadata": {}, - "source": [ - "We can now inspect how the eigenenergies evolve as a function of the interaction strength." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "<Figure size 1300x300 with 5 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# New result 0D\n", - "ds.vals.plot(x='Us', y='Vs', col='n')\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "868cf368-45a0-465e-b042-6182ff8b6998", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "<Figure size 1300x300 with 5 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# New result 0D\n", - "ds.vals.plot(x='Us', y='Vs', col='n')\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "0cb395cd-84d1-49b4-89dd-da7a2d09c8d0", - "metadata": {}, - "outputs": [], - "source": [ - "ds.to_netcdf('./data/diatomic_molecule_example.nc')" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.6" - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "state": {}, - "version_major": 2, - "version_minor": 0 - } - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/graphene_extended_hubbard.ipynb b/examples/graphene_extended_hubbard.ipynb deleted file mode 100644 index 72a004dd6fe0ce4591aac184e0400c9c1ff4beae..0000000000000000000000000000000000000000 --- a/examples/graphene_extended_hubbard.ipynb +++ /dev/null @@ -1,543 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 11, - "id": "cb509096-42c6-4a45-8dc4-a8eed3116e67", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import pymf.model as model\n", - "import pymf.solvers as solvers\n", - "import pymf.mf as mf\n", - "import pymf.tb as tb\n", - "import pymf.observables as observables\n", - "import pymf.kwant_helper.kwant_examples as kwant_examples\n", - "import pymf.kwant_helper.utils as kwant_utils" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "99f0e60c", - "metadata": {}, - "outputs": [], - "source": [ - "graphene_builder, int_builder = kwant_examples.graphene_extended_hubbard()\n", - "h_0 = kwant_utils.builder_to_tb(graphene_builder)" - ] - }, - { - "cell_type": "code", - "execution_count": 86, - "id": "9189a20f", - "metadata": {}, - "outputs": [], - "source": [ - "U=4\n", - "V=0\n", - "params = dict(U=U, V=V)\n", - "h_int = kwant_utils.builder_to_tb(int_builder, params)\n", - "_model = model.Model(h_0, h_int, filling=2)\n", - "guess = tb.utils.generate_guess(frozenset(h_int), len(list(h_0.values())[0]))\n", - "mf_sol = solvers.solver(_model, guess, nk=18, optimizer_kwargs={'M':0})\n", - "full_sol = tb.tb.add_tb(h_0, mf_sol)" - ] - }, - { - "cell_type": "code", - "execution_count": 87, - "id": "9d6ce961", - "metadata": {}, - "outputs": [], - "source": [ - "sx = np.array([[0, 1], [1, 0]])\n", - "sy = np.array([[0, -1j], [1j, 0]])\n", - "sz = np.array([[1, 0], [0, -1]])\n", - "\n", - "s_list = [sx, sy, sz]\n", - "rho, _ = mf.construct_density_matrix(full_sol, filling=2, nk=40)\n", - "\n", - "order_parameter_list = []\n", - "for s in s_list: \n", - " order_parameter = {}\n", - " order_parameter[(0,0)] = np.kron(sz, s)\n", - " order_parameter_list.append(order_parameter)\n", - "\n", - "expectation_value_list = []\n", - "for order_parameter in order_parameter_list:\n", - " expectation_value = observables.expectation_value(rho, order_parameter)\n", - " expectation_value_list.append(expectation_value)" - ] - }, - { - "cell_type": "code", - "execution_count": 88, - "id": "d77b4bea", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(1.804655008699922+0j)" - ] - }, - "execution_count": 88, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.sum(np.array(expectation_value_list)**2)" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "10dfae00", - "metadata": {}, - "outputs": [], - "source": [ - "#antiferromagnetic order parameter\n", - "anti_order_parameter = {}\n", - "anti_order_parameter[(0,0)] = np.kron(sz, sz)\n", - "expectation_value = observables.expectation_value(rho, anti_order_parameter)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7d3394a1", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "260bd7c1", - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "cdw_order_parameter = {}\n", - "cdw_order_parameter[(0,0)] = np.kron(sz, np.eye(2))\n", - "\n", - "\n", - "sdw_order_parameter = {}\n", - "sdw_order_parameter[(0,0)] = np.kron(np.eye(2), sz)" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "345644dc", - "metadata": {}, - "outputs": [], - "source": [ - "expectation_value = observables.expectation_value(rho, cdw_order_parameter)" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "fe4b9564", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(-1.5833996732759665+0j)" - ] - }, - "execution_count": 56, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "expectation_value" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "83e823ed", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{(0,\n", - " 0): array([[0., 0., 1., 0.],\n", - " [0., 0., 0., 1.],\n", - " [1., 0., 0., 0.],\n", - " [0., 1., 0., 0.]]),\n", - " (0,\n", - " -1): array([[0., 0., 1., 0.],\n", - " [0., 0., 0., 1.],\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.]]),\n", - " (0,\n", - " 1): array([[0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " [1., 0., 0., 0.],\n", - " [0., 1., 0., 0.]]),\n", - " (1,\n", - " -1): array([[0., 0., 1., 0.],\n", - " [0., 0., 0., 1.],\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.]]),\n", - " (-1,\n", - " 1): array([[0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " [1., 0., 0., 0.],\n", - " [0., 1., 0., 0.]])}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "h_0" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e1894ac3", - "metadata": {}, - "outputs": [], - "source": [ - "def compute_gap(h, fermi_energy=0, nk=100):\n", - " kham = tb.transforms.tb_to_khamvector(h, nk, ks=None)\n", - " vals = np.linalg.eigvalsh(kham)\n", - "\n", - " emax = np.max(vals[vals <= fermi_energy])\n", - " emin = np.min(vals[vals > fermi_energy])\n", - " return np.abs(emin - emax)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d0092977", - "metadata": {}, - "outputs": [], - "source": [ - "def compute_phase_diagram(Us, Vs, int_builder, h_0): \n", - " gap = []\n", - " for U in Us: \n", - " for V in Vs: \n", - " params = dict(U=U, V=V)\n", - " h_int = kwant_utils.builder_to_tb(int_builder, params)\n", - " _model = model.Model(h_0, h_int, filling=2)\n", - "\n", - " converged=False\n", - " while not converged:\n", - " guess = tb.utils.generate_guess(frozenset(h_int), len(list(h_0.values())[0]))\n", - " try:\n", - " mf_sol = solvers.solver(_model, guess, nk=18, optimizer_kwargs={'M':0})\n", - " converged=True\n", - " except:\n", - " converged=False\n", - " gap.append(compute_gap(tb.tb.add_tb(h_0, mf_sol), fermi_energy=0, nk=300))\n", - " guess = None\n", - " return np.asarray(gap, dtype=float).reshape(len(Us), len(Vs))" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "14f332f2", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 10/10 [07:09<00:00, 43.00s/it]\n" - ] - } - ], - "source": [ - "Us = np.linspace(0, 3, 10, endpoint=True)\n", - "Vs = np.linspace(0, 1.5, 10, endpoint=True)\n", - "gap = compute_phase_diagram(Us, Vs, int_builder, h_0)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "0d2ad9d8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "<matplotlib.collections.QuadMesh at 0x14de67c10>" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGwCAYAAAAJ/wd3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1IklEQVR4nO3dfXSU9Z3//9ckIRNQEwQ0JhIw3gDRrBST7RowCiLhRJe1rT3Q0q9BSbqm4WZJhC4h/RXka029o6kCQVcw6+9Qyio32tOskl3lRtD+TExaK7RaoSTYiTmhaxJAA0mu3x80s44Z4kxmcn1mMs/HOdfxzJXPZ673x0vC28+tw7IsSwAAADaJMh0AAACILCQfAADAViQfAADAViQfAADAViQfAADAViQfAADAViQfAADAVjGmA7BbT0+P/vKXv+iSSy6Rw+EwHQ4AIIRZlqWOjg4lJycrKsrc/6+fPn1an376qa688kpjMQSTI9I2GTtx4oRSUlJMhwEACCNNTU0aO3assef/4L6Rqtrerj/9qWlIJCARl3y0tbVp5MiRyo6+WzGOYabD8coRRY8MzHAMjzMdwoWFeE+lIybEO5KHO01H0K/uxEtNh+BVV3enDtQ/qU8//VQJCQlGYvjoo490ww3XKeNGp9InxeqZF9qMxBFMIf6nJfh6h1piHMNCN/kI8V+yGLocjljTIVxYiP+5cESF+K/TqNBOPhwxIZz4yuzv5dX/OkXf+cbF+uGiUbppVqNW/PhPuvbaa43FEwxMOAUAIET9/ve/145fn9LqB0dr0nWxmv+tS7T6X28yHVbASD4AAAhRZctvVsH34jU+5XxP/f9TPEo7q0/pvffeMxxZYEg+AAAIQb/5zW/03wfOaNW/jHLfG58yTN//XoLKVmQZjCxwJB8AAISgVctnaGnBSCVe5jmfqPRfLtXrB87orbfeMhRZ4Eg+AAAIMf/93/+td9/r1IM/6LsKKPGyGP3L90dq1fKZCtcFqyQfAACEEMuytGrFXfrhokt16chor2Ue/MGl+u3hTv3Xf/2XzdEFB8kHAAAh5OWXX9bxE11anD/ygmVGJkTrh4su1aoVc8Ky94PkAwCAENHd3a0frZynsmWjdNGI/v+KXrxwpE64urR79257ggsikg8AAELEL37xC50+06Pv/5+v3k11xIgo/ah4lH608jvq7u62IbrgIfkAACAEnD17Vqt/tFA/Xj5asbG+7aiaPz9Bn33eo/93Q3id90LyAQBACPi3dWMV54zS/7nnEp/rxMY6tHr5aD30xEmdPXt2EKMLLpIPAAAMO3PmjB7+2V+19l9HKzrav3Nk5n/rEo0YHqVnn/T/1N39+/drzpw5Sk5OlsPh8Gn+yL59+5SRkaG4uDhdffXV2rRpk9/PJfkAAMCwp8vHaWxSjL5550V+142Odmjtv47Wwz/7q06fPu1X3dOnT2vy5Mlav369T+WPHTumO++8U9nZ2aqvr9eqVau0dOlS7dixw6/nhvgxjAAADG2ffvqpHl3/P9q26YoBn577jdyL9OjTMXrqkfEq/Umrz/Vyc3OVm5vrc/lNmzZp3LhxqqiokCSlpaWptrZWTzzxhO655x6fv4eeDwAADNq0aZP+bpJTd9w6YsDf4XA49H9XjtZj6/9HJ0+eVHt7u/vq7OwMWqxvvfWWcnJyPO7Nnj1btbW1OnfunM/fQ/IBAIBBLS0tmvJ3zgH3evS66e/i9Gl7j8aMGaOEhAT3VV5eHqRIpebmZiUmJnrcS0xMVFdXl1pbfe9xYdgFAADDLFnqUU9A39Fb3+VyacSI/+1FcTqdAX3vl305SerdYdWf5InkAwAAwyxZ6rYCSz5668fHx3skH8F0xRVXqLm52eNeS0uLYmJiNHr0aJ+/h2EXAADgk6ysLNXU1Hjc27NnjzIzMzVs2DCfv4fkAwAAwyxJPbICvvx16tQpNTQ0qKGhQdL5pbQNDQ1qbGyUJJWWliovL89dvrCwUMePH1dJSYmOHDmiLVu2aPPmzVq+fLlfz2XYBQAAw4I558MftbW1mjFjhvtzSUmJJGnBggWqqqqSy+VyJyKSlJqaqurqahUXF2vDhg1KTk7WU0895dcyW4nkAwCAiDV9+nT3hFFvqqqq+ty77bbb9O677wb0XJIPAAAMsyxL3f0kAb7oCbC+nUg+AAAwrHfORyACrW8nkg8AAAzrkaXuAJOHQOvbidUuAADAVvR8AAAQAgIfdgkfJB8AABjWIwU84TSchl1IPgAAMOz8hNPAhFPPB3M+AACArej5AADAMCsIq11YagsAAHxmWVJ3gLlDoPXtxLALAACwFT0fAAAYFmkTTo0mH/v379fjjz+uuro6uVwu7dq1S9/4xjd8qnvw4EHddtttSk9Pdx8F7A9HlEMOh8PvekAgHE6n6RD61xPCv76io01H0L9Q/30SFdr//s5dEms6BK+6uuz5M2HJoW4F9t9QoPXtZHTY5fTp05o8ebLWr1/vV722tjbl5eVp5syZgxQZAAD2sST1WIFf4cJoz0dubq5yc3P9rvfAAw9o/vz5io6O1u7du4MfGAAAGDRhN+H0+eef10cffaTVq1f7VL6zs1Pt7e0eFwAAoaRH54dNArl6GHYZHB9++KFWrlyprVu3KibGt06b8vJyJSQkuK+UlJRBjhIAAP9YCjz56DbdCD+ETfLR3d2t+fPn66GHHtKECRN8rldaWqq2tjb31dTUNIhRAgDgP0sO9ViBX+EibJbadnR0qLa2VvX19Vq8eLEkqaenR5ZlKSYmRnv27NHtt9/ep57T6ZQz1FcYAAAQQcIm+YiPj9d7773ncW/jxo16/fXX9dJLLyk1NdVQZAAABKZ32CUQ4bTU1mjycerUKf3pT39yfz527JgaGho0atQojRs3TqWlpfr444/1wgsvKCoqSunp6R71L7/8csXFxfW5DwBAOOmRQ90BzoQI9GwYOxlNPmprazVjxgz355KSEknSggULVFVVJZfLpcbGRlPhAQCAQWA0+Zg+fbos68KZWlVVVb/116xZozVr1gQ3KAAA7BaECaMWE04BAICvevf5CARzPgAAgM8sOdRtBTjno5+RhFATNvt8AACAoYGeDwAADLPkUE+A/QE9rHYBAAC+Yp8PAABgqx4r8DkfPcz5AAAA8I6eDwAAjHOoJ8Bhk54gRWIHkg8AAAw7v89HoNurh89gRvhECgAAhgR6PgAAMCw4m4yFT38CyQcAAIYFZ58Pkg8AAOAjy3KoO8CD4QI9mM5O4ZMmAQCAIYGeDwAADOuRI6JWu5B8AABgmCWpJ+AdTkk+AACAj6yg9Hww5wMAAMArej4AADDs/D4fAZ5qG0arXUg+AAAwLBj7fFhhNJgRPpECAIAhgZ4PAAAMs6zAt0dne3UAAOCz88MuAe5wGkarXUg+AAAwrCfCDpYLn0gBAMCQQM8HAACGBWeTsfDpTyD5CEWOEP8PyOoxHUH4sizTEfTPET5jxiEnxP/d/frQK6ZD6NfU5YWmQ/Cq61y3Lc+xrMBPpbXY5wMAAPgq0no+widSAAAwJNDzAQCAYZYcgZ9qy1JbAADgK0uBn0rLqbYAAAAXQM8HAACGWVYQhl3CaJMxkg8AAAw7v9olcrZXN5om7d+/X3PmzFFycrIcDod2797db/mdO3dq1qxZuuyyyxQfH6+srCy99tpr9gQLAMAg6Z1wGugVLoxGevr0aU2ePFnr16/3qfz+/fs1a9YsVVdXq66uTjNmzNCcOXNUX18/yJECAIBgMTrskpubq9zcXJ/LV1RUeHx+5JFH9PLLL+tXv/qVpkyZ4rVOZ2enOjs73Z/b29sHFCsAAIOlxwr8YDgOlrNJT0+POjo6NGrUqAuWKS8vV0JCgvtKSUmxMUIAAL6aJYd6gnANxMaNG5Wamqq4uDhlZGTowIED/ZbfunWrJk+erBEjRigpKUn333+/Tp486dczwzr5ePLJJ3X69GnNnTv3gmVKS0vV1tbmvpqammyMEACAr2bJoW4rKuDLX9u3b9eyZctUVlam+vp6ZWdnKzc3V42NjV7Lv/nmm8rLy1N+fr7ef/99vfjii3rnnXdUUFDg13PDNvnYtm2b1qxZo+3bt+vyyy+/YDmn06n4+HiPCwCAoaq9vd3j+uLUgy9bt26d8vPzVVBQoLS0NFVUVCglJUWVlZVey7/99tu66qqrtHTpUqWmpuqWW27RAw88oNraWr9iDMvkY/v27crPz9d//Md/6I477jAdDgAAAbF0/lTbwK7z35WUlOQx3aC8vNzrM8+ePau6ujrl5OR43M/JydGhQ4e81pk6dapOnDih6upqWZalTz75RC+99JLuuusuv9obdvt8bNu2TQsXLtS2bdv8biwAAKEoGKfa9vytvsvl0ogRI9z3nU6n1/Ktra3q7u5WYmKix/3ExEQ1Nzd7rTN16lRt3bpV8+bN0+eff66uri790z/9k55++mm/YjXa83Hq1Ck1NDSooaFBknTs2DE1NDS4x5pKS0uVl5fnLr9t2zbl5eXpySef1M0336zm5mY1Nzerra3NRPgAAIScL081uFDy0cvh8JyoallWn3u9Dh8+rKVLl+rHP/6x6urq9Oqrr+rYsWMqLCz0K0ajPR+1tbWaMWOG+3NJSYkkacGCBaqqqpLL5fKY9PLMM8+oq6tLixYt0qJFi9z3e8sDABCOLOv8sEsg/K0/ZswYRUdH9+nlaGlp6dMb0qu8vFzTpk3TihUrJEk33nijLrroImVnZ+vhhx9WUlKST882mnxMnz5dlmVd8OdfTij27t07uAEBAGDA+aW2wRl28VVsbKwyMjJUU1Ojb37zm+77NTU1uvvuu73WOXPmjGJiPFOH6OhoSer37/MvC7s5HwAADDXnl9oG1vMxkPolJSW69957lZmZqaysLD377LNqbGx0D6OUlpbq448/1gsvvCBJmjNnjr7//e+rsrJSs2fPlsvl0rJly/T1r39dycnJPj+X5AMAgAg1b948nTx5UmvXrpXL5VJ6erqqq6s1fvx4Seoz/eG+++5TR0eH1q9frwcffFAjR47U7bffrkcffdSv55J8AABgmIk5H72KiopUVFTk9Wfe5lMuWbJES5YsGdCzepF8AABgWO+ptoEIp1NtST4AADDs/D4fAfZ8BFjfTuGTJgEAgCGBng8AAAwzOefDBJIPAAAMC86cj/BJPhh2AQAAtqLnAwAAwywFPmE0nCacknwAAGCYZZnZ4dQUkg8AAAwLypyPMJpJET6RAgCAIYGeDwAADLMU+GoVi2EXAADgK0sOJpwCAAD7RNomY8z5AAAAtqLnAwAAwzjVFuZZPaYjCF8x/CcNQ6JC+xf/nTlzTYfQr/Z/Cs0hg+5Oe+Ji2AUAAGAQ8b+JAAAYx2oXAABgI/b5AAAAtrIsB3M+AAAABgs9HwAAGBaMYZceKzix2IHkAwAAw87v8xE5wy4kHwAAGGYp8NUq4bTahTkfAADAVvR8AABgWKTtcEryAQCAYZE254NhFwAAYCt6PgAAMC0Iwy7scAoAAHzGsIuN9u/frzlz5ig5OVkOh0O7d+/+yjr79u1TRkaG4uLidPXVV2vTpk2DHygAAIPIss73XAR6hQujycfp06c1efJkrV+/3qfyx44d05133qns7GzV19dr1apVWrp0qXbs2DHIkQIAgGAxOuySm5ur3Nxcn8tv2rRJ48aNU0VFhSQpLS1NtbW1euKJJ3TPPfd4rdPZ2anOzk735/b29oBiBgAg2Cw52GQsVL311lvKycnxuDd79mzV1tbq3LlzXuuUl5crISHBfaWkpNgRKgAAPus92yWgi+RjcDQ3NysxMdHjXmJiorq6utTa2uq1Tmlpqdra2txXU1OTHaECAOC7CJvzEXarXRwOz3+5lmV5vd/L6XTK6XQOelwAAMA3YZV8XHHFFWpubva419LSopiYGI0ePdpQVAAABCbSltqGVfKRlZWlX/3qVx739uzZo8zMTA0bNsxQVAAABC7QYZNwGnYxOufj1KlTamhoUENDg6TzS2kbGhrU2Ngo6fx8jby8PHf5wsJCHT9+XCUlJTpy5Ii2bNmizZs3a/ny5SbCBwAAA2C056O2tlYzZsxwfy4pKZEkLViwQFVVVXK5XO5ERJJSU1NVXV2t4uJibdiwQcnJyXrqqacuuMwWAIBwYFmBD7v8bQpkWDCafEyfPt09YdSbqqqqPvduu+02vfvuu4MYFQAA9rIUePJA8gEAAPzCJmMAAACDhJ4PAAAMC8YmYeG02oXkAwAAw3q3Vw8E+3wAAADfWZE14ZQ5HwAAwFb0fAAAYJgl5nwAAAA7WWyvDgAAMGjo+QAAwDBWuwAAANtF0mqXyE0+HA7JwagTEC7+8PNrTIfQrwkbz5kOIaydmdhpOgSvej6zJ65gbDImtlcHAADwLnJ7PgAACCGRtNqF5AMAAMOsv12Bfke4IPkAAMC0CDtYjjkfAADAVvR8AAAQCiJo3IWeDwAADLOs/11uG8g1EBs3blRqaqri4uKUkZGhAwcO9Fu+s7NTZWVlGj9+vJxOp6655hpt2bLFr2fS8wEAQITavn27li1bpo0bN2ratGl65plnlJubq8OHD2vcuHFe68ydO1effPKJNm/erGuvvVYtLS3q6ury67kkHwAAhAATO5yuW7dO+fn5KigokCRVVFTotddeU2VlpcrLy/uUf/XVV7Vv3z4dPXpUo0aNkiRdddVVfj+XYRcAAAwLxpBL77BLe3u7x9XZ6X2X1rNnz6qurk45OTke93NycnTo0CGvdV555RVlZmbqscce05VXXqkJEyZo+fLl+uyzz/xqLz0fAACEgkCXyv6tflJSksft1atXa82aNX2Kt7a2qru7W4mJiR73ExMT1dzc7PURR48e1Ztvvqm4uDjt2rVLra2tKioq0l//+le/5n2QfAAAMIS4XC6NGDHC/dnpdPZb3uHwTHosy+pzr1dPT48cDoe2bt2qhIQESeeHbr797W9rw4YNGj58uE8xknwAABACgjXnIz4+3iP5uJAxY8YoOjq6Ty9HS0tLn96QXklJSbryyivdiYckpaWlybIsnThxQtddd51PsTLnAwAA06wgXX6IjY1VRkaGampqPO7X1NRo6tSpXutMmzZNf/nLX3Tq1Cn3vQ8++EBRUVEaO3asz88m+QAAwLjgTTj1R0lJiZ577jlt2bJFR44cUXFxsRobG1VYWChJKi0tVV5enrv8/PnzNXr0aN1///06fPiw9u/frxUrVmjhwoU+D7lIDLsAABCx5s2bp5MnT2rt2rVyuVxKT09XdXW1xo8fL+n8/JHGxkZ3+Ysvvlg1NTVasmSJMjMzNXr0aM2dO1cPP/ywX88l+QAAwDSDx9oWFRWpqKjI68+qqqr63Js0aVKfoRp/kXwAAGCYpcBPpQ10wqqdmPMBAABsRc8HAACmBWPYJYyQfAAAEBIC3OE04Pr2MT7s4u9Rvlu3btXkyZM1YsQIJSUl6f7779fJkydtihYAgEFi8z4fJhlNPnqP8i0rK1N9fb2ys7OVm5vrsazni958803l5eUpPz9f77//vl588UW988477tP4AABA6DOafHzxKN+0tDRVVFQoJSVFlZWVXsu//fbbuuqqq7R06VKlpqbqlltu0QMPPKDa2lqbIwcAIMjo+Rh8AznKd+rUqTpx4oSqq6tlWZY++eQTvfTSS7rrrrsu+JzOzs4+xwsDABBSLEdwrjBhLPkYyFG+U6dO1datWzVv3jzFxsbqiiuu0MiRI/X0009f8Dnl5eVKSEhwXykpKUFtBwAAwWBZgV/hwviEU3+O8j18+LCWLl2qH//4x6qrq9Orr76qY8eOufeg96a0tFRtbW3uq6mpKajxAwAA/xhbajuQo3zLy8s1bdo0rVixQpJ044036qKLLlJ2drYefvhhJSUl9anjdDrldDqD3wAAAILF4PbqJhjr+RjIUb5nzpxRVJRnyNHR0ZLO95gAABC2mPNhD3+P8p0zZ4527typyspKHT16VAcPHtTSpUv19a9/XcnJyaaaAQAA/GB0h1N/j/K977771NHRofXr1+vBBx/UyJEjdfvtt+vRRx811QQAAAJnSY4AO/ADrW8nv5OPf//3f9eYMWPcy1t/+MMf6tlnn9X111+vbdu2uRMHX/l7lO+SJUu0ZMkSf8MGACC0Mefjwh555BENHz5ckvTWW29p/fr1euyxxzRmzBgVFxcHPUAAAIa8CNvnw++ej6amJl177bWSpN27d+vb3/62/vmf/1nTpk3T9OnTgx0fAAAYYvzu+bj44ovdB7nt2bNHd9xxhyQpLi5On332WXCjAwAgUkTQ9up+93zMmjVLBQUFmjJlij744AP33I/3339fV111VbDjAwAgMkTQnA+fk4+GhgZ97Wtf04YNG/SjH/1ITU1N2rFjh0aPHi1Jqqur03e/+91BCxSh4z+P/cZ0CBeUe22W6RD69dktaaZD6Nfwg38wHcIFTSo+ajqEfjkuvsh0CP06c33fTRhDSfaED0yH4NXZ02dly77YEbbJmM/Jx0033aQpU6aooKBAP/nJT5SQkODx84ceeijowQEAgKHH5zkfBw8e1E033aSVK1cqKSlJ9957r954443BjA0AgMgRQatdfE4+srKy9G//9m9qbm5WZWWlmpqadMcdd+iaa67RT37yE504cWIw4wQAYMhyWEG4TDfCD36vdhk+fLgWLFigvXv36oMPPtB3v/tdPfPMM0pNTdWdd945GDECAIAhJKCzXa655hqtXLlSZWVlio+P12uvvRasuAAAiCwstf1q+/bt05YtW7Rjxw5FR0dr7ty5ys/PD2ZsAABgCPIr+WhqalJVVZWqqqp07NgxTZ06VU8//bTmzp2riy4K7WVmAACELA6W827WrFl64403dNlllykvL08LFy7UxIkTBzM2AAAwBPmcfAwfPlw7duzQP/7jPyo6OnowYwIAIMIEYalsGC219Tn5eOWVVwYzDgAAIhc7nAIAANtFUPIR0FJbAAAAf9HzAQBACGC1CwAAsE+Ezflg2AUAANiKng8AAEJBBPV8kHwAAGCYgx1OAQCA7SJokzHmfAAAAFvR8wEAgGkRttqF5AMAgBDAnA8AAGCvMEoeAsWcDwAAYCt6PgAAMIyltgAAwH4RNOGUYRcAAGArej4AADCNpbYAAMBukTTng2EXAABgK+PJx8aNG5Wamqq4uDhlZGTowIED/Zbv7OxUWVmZxo8fL6fTqWuuuUZbtmyxKVoAABAoo8Mu27dv17Jly7Rx40ZNmzZNzzzzjHJzc3X48GGNGzfOa525c+fqk08+0ebNm3XttdeqpaVFXV1dNkcOAEAQMefDPuvWrVN+fr4KCgokSRUVFXrttddUWVmp8vLyPuVfffVV7du3T0ePHtWoUaMkSVdddVW/z+js7FRnZ6f7c3t7e/AaAABAEDjEnA9bnD17VnV1dcrJyfG4n5OTo0OHDnmt88orrygzM1OPPfaYrrzySk2YMEHLly/XZ599dsHnlJeXKyEhwX2lpKQEtR0AAATMCtIVJoz1fLS2tqq7u1uJiYke9xMTE9Xc3Oy1ztGjR/Xmm28qLi5Ou3btUmtrq4qKivTXv/71gvM+SktLVVJS4v7c3t5OAgIAgEHGl9o6HA6Pz5Zl9bnXq6enRw6HQ1u3blVCQoKk80M33/72t7VhwwYNHz68Tx2n0ymn0xn8wAEACKYImvNhbNhlzJgxio6O7tPL0dLS0qc3pFdSUpKuvPJKd+IhSWlpabIsSydOnBjUeAEAGEy957sEcoULYz0fsbGxysjIUE1Njb75zW+679fU1Ojuu+/2WmfatGl68cUXderUKV188cWSpA8++EBRUVEaO3asX89fWfsbXXSJ8ZXGXi3+6RLTIfTrrluuMB3CBUUN7zAdQr+Gv3nEdAj9u0CvYyhwOELzz6tbjPGO5H51jB9mOoR+fXLLKdMheNVlnTMdwpBk9E9zSUmJnnvuOW3ZskVHjhxRcXGxGhsbVVhYKOn8fI28vDx3+fnz52v06NG6//77dfjwYe3fv18rVqzQwoULvQ65AAAQFphwap958+bp5MmTWrt2rVwul9LT01VdXa3x48dLklwulxobG93lL774YtXU1GjJkiXKzMzU6NGjNXfuXD388MOmmgAAQMCCsdQ2nJIP4/2YRUVF+vOf/6zOzk7V1dXp1ltvdf+sqqpKe/fu9Sg/adIk1dTU6MyZM2pqatKTTz5JrwcAILwZ7Pnwd6fxXgcPHlRMTIy+9rWv+f1M48kHAAAwo3en8bKyMtXX1ys7O1u5ubkeow7etLW1KS8vTzNnzhzQc0k+AAAIBQZ6Pr6403haWpoqKiqUkpKiysrKfus98MADmj9/vrKysvx/qEg+AAAwLwjLbHvXqrW3t3tcXzxi5IsGstO4JD3//PP66KOPtHr16gE3l+QDAIBQEKSej6SkJI9jRbydlSYNbKfxDz/8UCtXrtTWrVsVE8Dy8tBemA4AAPzicrk0YsQI9+ev2uXb153Gu7u7NX/+fD300EOaMGFCQDGSfAAAYFow9un4W/34+HiP5ONC/N1pvKOjQ7W1taqvr9fixYslnT/2xLIsxcTEaM+ePbr99tt9CpXkAwCAEBDoPh/+1vd3p/H4+Hi99957Hvc2btyo119/XS+99JJSU1N9fjbJBwAAEaqkpET33nuvMjMzlZWVpWeffbbPTuMff/yxXnjhBUVFRSk9Pd2j/uWXX664uLg+978KyQcAAKHAwA6n/u40HiwkHwAAGBaMU2kHWr+oqEhFRUVef1ZVVdVv3TVr1mjNmjV+P5PkAwCAUMDZLgAAAIODng8AAEwL4lLbcEDyAQBACOi7rZe99e1E8gEAQCiIoJ4P5nwAAABb0fMBAIBhJpfamkDyAQBAKGDYBQAAYHDQ8wEAQCiIoJ4Pkg8AAExjzgcAALBdGCUPgWLOBwAAsBU9HwAAGMZSWwAAYD8mnAIAANtEWM8Hcz4AAICt6PkAACAUMOwCAABsYymikg+GXQAAgK3o+QAAwDCHImvCKckHAAChIIKGXUg+AAAwzZIcVmDZQ6D17WQ8+di4caMef/xxuVwu3XDDDaqoqFB2dvZX1jt48KBuu+02paenq6Ghwe/nPjZjpmKiYgcQ8eC7/PP3TIfQr57ubtMhYJA4oqNNh3BhUQ7TEfTLGh6av096fTohtP9iGt0TmvFZYfQXejgxOuF0+/btWrZsmcrKylRfX6/s7Gzl5uaqsbGx33ptbW3Ky8vTzJkzbYoUAIBBZgXhChNGk49169YpPz9fBQUFSktLU0VFhVJSUlRZWdlvvQceeEDz589XVlaWTZECADCIrP893yWQK1wYSz7Onj2ruro65eTkeNzPycnRoUOHLljv+eef10cffaTVq1f79JzOzk61t7d7XAAAhBx6PgZfa2ururu7lZiY6HE/MTFRzc3NXut8+OGHWrlypbZu3aqYGN+mq5SXlyshIcF9paSkBBw7AAAYOOObjDkcnpPILMvqc0+Suru7NX/+fD300EOaMGGCz99fWlqqtrY299XU1BRwzAAABFMwhlzCadjF2GqXMWPGKDo6uk8vR0tLS5/eEEnq6OhQbW2t6uvrtXjxYklST0+PLMtSTEyM9uzZo9tvv71PPafTKafTOTiNAAAgWCJonw9jPR+xsbHKyMhQTU2Nx/2amhpNnTq1T/n4+Hi99957amhocF+FhYWaOHGiGhoa9A//8A92hQ4AAAJgdJ+PkpIS3XvvvcrMzFRWVpaeffZZNTY2qrCwUNL5IZOPP/5YL7zwgqKiopSenu5R//LLL1dcXFyf+wAAhJUwGzYJlNHkY968eTp58qTWrl0rl8ul9PR0VVdXa/z48ZIkl8v1lXt+AAAwJETQsIvxHU6LiopUVFTk9WdVVVX91l2zZo3WrFkT/KAAALBRpB0sZ3y1CwAAiCzGez4AAIh4lnX+CvQ7wgTJBwAAISCShl1IPgAAMC0Y26OHUfLBnA8AAGArej4AADDMYUmOngC/I8D6diL5AAAgFDDsAgAAMDjo+QAAwLQgbK/OahcAAOAf9vkAAAB2iqSeD+Z8AAAAW9HzAQCAaRG2yRjJBwAAhgXlVNugRGIPkg8AAEyLsIPlmPMBAABsRc8HAAAhIJJWu5B8AABgWoRNOGXYBQAA2IqeDwAADAvKapcw6vkg+QAAwDRLUk+A2UOg9W1E8gEAQChgzgcAAMDgoOcDAADTLOZ8AAAAW0XWDqckHwAAGOag5yMy9Jw+rR7HOdNhINI4Qvzop6gQngYWyrFJ6r5kuOkQ+nXppJOmQ+jXax/Xmw7Bq/aObl06wXQUg2vjxo16/PHH5XK5dMMNN6iiokLZ2dley+7cuVOVlZVqaGhQZ2enbrjhBq1Zs0azZ8/265mh/acZAIBIYQXh8tP27du1bNkylZWVqb6+XtnZ2crNzVVjY6PX8vv379esWbNUXV2turo6zZgxQ3PmzFF9vX/JY8T2fAAAEDIsyRHgnI3e+u3t7erq6nLfdzqdcjqdXuusW7dO+fn5KigokCRVVFTotddeU2VlpcrLy/uUr6io8Pj8yCOP6OWXX9avfvUrTZkyxedY6fkAAGAISUpKUkJCgvvylkRI0tmzZ1VXV6ecnByP+zk5OTp06JBPz+rp6VFHR4dGjRrlV4z0fAAAEAp6Aqz/t44Tl8ulESNGuG9fqNejtbVV3d3dSkxM9LifmJio5uZmnx755JNP6vTp05o7d65foZJ8AABgmCMowy7n/xkfH++RfHxlvS9NhLcsq889b7Zt26Y1a9bo5Zdf1uWXX+5XrCQfAACEApu3Vx8zZoyio6P79HK0tLT06Q35su3btys/P18vvvii7rjjDn8jNT/nY+PGjUpNTVVcXJwyMjJ04MCBC5bduXOnZs2apcsuu0zx8fHKysrSa6+9ZmO0AAAMDbGxscrIyFBNTY3H/ZqaGk2dOvWC9bZt26b77rtPv/jFL3TXXXcN6NlGkw9TS3wAAAgplhWcy08lJSV67rnntGXLFh05ckTFxcVqbGxUYWGhJKm0tFR5eXnu8tu2bVNeXp6efPJJ3XzzzWpublZzc7Pa2tr8eq7RYRdTS3wAAAg1JnY4nTdvnk6ePKm1a9fK5XIpPT1d1dXVGj9+vKTzk1e/2CHwzDPPqKurS4sWLdKiRYvc9xcsWKCqqiqfn2ss+ehd4rNy5UqP+8Fe4tPZ2anOzk735/b29oEFDADAYLFk7GyXoqIiFRUVef3ZlxOKvXv3DugZX2Zs2MWuJT7l5eUe651TUlICihsAAATG+ITTQJf4bN++vd8lPqWlpWpra3NfTU1NAccMAEBQWZKjJ7Ar4H1CbGRs2MWuJT79bSsLAEBoGNiEUc+vCJ9jbY31fJhc4gMAAMwxutqlpKRE9957rzIzM5WVlaVnn322zxKfjz/+WC+88IKk/13i8/Of/9y9xEeShg8froSEBGPtAAAgYDZvMmaS0eTD1BIfAABCSXC2Vw+f7MP49uomlvgAABBamPMBAAAwaIz3fAAAEPEsBb5UNnw6Pkg+AAAwjjkfAADAXsz5AAAAGDT0fAAAEAoiqOeD5AMAANOCMeE0jM52YdgFAADYip4PAAAMY4dTAABgs8ha7ULyAQCAaZYiKvlgzgcAALAVPR8AABjHsAsAALBThC21JfkAACAERNJqF+Z8AAAAW9HzAQCAaVYQ5nyEEZIPAABMsyT1BJh8BFrfRgy7AAAAW9HzASA8REebjqBfZ64cbjqEfn1r3NumQ+jX7CunmA7Bqy7rnKSjNjyJpbYAAMBOEbbDKckHAAChIIKSD+Z8AAAAW9HzAQCAaZYVUatdSD4AADDOkqwA90cPtL6NSD4AADAtwiacMucDAADYip4PAABMY84HAACwHcMuAAAAg4OeDwAATIuwCackHwAAGBeEs11E8gEAAHxlWVJPgPt0hNGEU+Z8AAAAWxlPPjZu3KjU1FTFxcUpIyNDBw4c6Lf8vn37lJGRobi4OF199dXatGmTTZECADCILCvwK0wYTT62b9+uZcuWqaysTPX19crOzlZubq4aGxu9lj927JjuvPNOZWdnq76+XqtWrdLSpUu1Y8cOmyMHACCIgpF4kHz4Zt26dcrPz1dBQYHS0tJUUVGhlJQUVVZWei2/adMmjRs3ThUVFUpLS1NBQYEWLlyoJ5544oLP6OzsVHt7u8cFAEBIsXR+zkagV5gwlnycPXtWdXV1ysnJ8bifk5OjQ4cOea3z1ltv9Sk/e/Zs1dbW6ty5c17rlJeXKyEhwX2lpKQEpwEAAGBAjCUfra2t6u7uVmJiosf9xMRENTc3e63T3NzstXxXV5daW1u91iktLVVbW5v7ampqCk4DAAAIGkuW1RPwFS6ML7V1OBweny3L6nPvq8p7u9/L6XTK6XQGGCUAAIOod9glEAy7fLUxY8YoOjq6Ty9HS0tLn96NXldccYXX8jExMRo9evSgxQoAAILHWPIRGxurjIwM1dTUeNyvqanR1KlTvdbJysrqU37Pnj3KzMzUsGHDBi1WAAAGF6tdbFNSUqLnnntOW7Zs0ZEjR1RcXKzGxkYVFhZKOj9fIy8vz12+sLBQx48fV0lJiY4cOaItW7Zo8+bNWr58uakmAAAQuN4dTgO9woTROR/z5s3TyZMntXbtWrlcLqWnp6u6ulrjx4+XJLlcLo89P1JTU1VdXa3i4mJt2LBBycnJeuqpp3TPPfeYagIAAIELxsFynO3iu6KiIhUVFXn9WVVVVZ97t912m959991BjgoAAAwW48kHAACRzrIsWQEOm7DUFgAA+CEIE0bDZ9SF5AMAAOOCsc8Hq10AAAC8o+cDAADjLCnQORvM+QAAAD6zJCvAYReLYRcAAADvSD4AADDN+tuwS6DXAGzcuFGpqamKi4tTRkaGDhw40G/5ffv2KSMjQ3Fxcbr66qu1adMmv59J8gEAgGHn9/kI/PLX9u3btWzZMpWVlam+vl7Z2dnKzc312F38i44dO6Y777xT2dnZqq+v16pVq7R06VLt2LHDr+eSfAAAYJyZno9169YpPz9fBQUFSktLU0VFhVJSUlRZWem1/KZNmzRu3DhVVFQoLS1NBQUFWrhwoZ544gm/nhtxE057J+R0WecMR4LI5DAdQL8cITxhzdET2r+uus59bjqEfn1+KrR/54Xq7+TeuAZzMufw4cPl0nH91WoJ6Hss9Sg2NlanTp1SV1eX+77T6ZTT6exT/uzZs6qrq9PKlSs97ufk5OjQoUNen/HWW28pJyfH497s2bO1efNmnTt3zucT5kP7T/Mg6OjokCTt/3yn4UgA+KXNdABf4WXTAfTv/wvx+EJdR0eHEhISBuW7y8rKdOuttwblu3bv3q3ExESPe6tXr9aaNWv6lG1tbVV3d3ef8omJiWpubvb6/c3NzV7Ld3V1qbW1VUlJST7FGXHJR3JyspqamnTJJZfI4Qj8/0Lb29uVkpKipqYmxcfHByHC0BZJ7Y2ktkqR1d5IaqsUWe0Ndlsty1JHR4eSk5ODEJ13I0aM0OzZs4PyXdOnT9ejjz7qcc9br8cXffnvQsuy+v370Vt5b/f7E3HJR1RUlMaOHRv0742Pjx/yf6i/KJLaG0ltlSKrvZHUVimy2hvMtg5Wj8dguNAQizdjxoxRdHR0n16OlpaWPr0bva644gqv5WNiYjR69Gif42TCKQAAESg2NlYZGRmqqanxuF9TU6OpU6d6rZOVldWn/J49e5SZmenzfA+J5AMAgIhVUlKi5557Tlu2bNGRI0dUXFysxsZGFRYWSpJKS0uVl5fnLl9YWKjjx4+rpKRER44c0ZYtW7R582YtX77cr+dG3LBLsDmdTq1evdrnbq5wF0ntjaS2SpHV3khqqxRZ7Y2ktgbDvHnzdPLkSa1du1Yul0vp6emqrq7W+PHjJUkul8tjz4/U1FRVV1eruLhYGzZsUHJysp566indc889fj3XYYXTZvAAACDsMewCAABsRfIBAABsRfIBAABsRfIBAABsRfLhAxPHDZvkT3v37t0rh8PR5/rDH/5gY8QDs3//fs2ZM0fJyclyOBzavXv3V9YJ13frb1vD+b2Wl5fr7//+73XJJZfo8ssv1ze+8Q398Y9//Mp64fpuB9LecH2/lZWVuvHGG90biGVlZek///M/+60Tru91qCP5+Aqmjhs2xd/29vrjH/8ol8vlvq677jqbIh6406dPa/LkyVq/fr1P5cP53frb1l7h+F737dunRYsW6e2331ZNTY26urqUk5Oj06dPX7BOOL/bgbS3V7i937Fjx+qnP/2pamtrVVtbq9tvv11333233n//fa/lw/m9DnkW+vX1r3/dKiws9Lg3adIka+XKlV7L//CHP7QmTZrkce+BBx6wbr755kGLMZj8be8bb7xhSbL+53/+x4boBo8ka9euXf2WCfd328uXtg6V92pZltXS0mJJsvbt23fBMkPl3VqWb+0dSu/30ksvtZ577jmvPxtK73WooeejH73HDX/5+OCBHDdcW1urc+dC88joXgNpb68pU6YoKSlJM2fO1BtvvDGYYRoTzu92oIbCe21rO38c7qhRoy5YZii9W1/a2yuc3293d7d++ctf6vTp08rKyvJaZii916GG5KMfg3HccCgbSHuTkpL07LPPaseOHdq5c6cmTpyomTNnav/+/XaEbKtwfrf+Girv1bIslZSU6JZbblF6evoFyw2Vd+tre8P5/b733nu6+OKL5XQ6VVhYqF27dun666/3WnaovNehiO3VfWDiuGGT/GnvxIkTNXHiRPfnrKwsNTU16YknntCtt946qHGaEO7v1ldD5b0uXrxYv/vd7/Tmm29+Zdmh8G59bW84v9+JEyeqoaFBn376qXbs2KEFCxZo3759F0xAhsJ7HYro+eiHyeOGTRhIe725+eab9eGHHwY7POPC+d0GQ7i91yVLluiVV17RG2+8obFjx/Zbdii8W3/a6024vN/Y2Fhde+21yszMVHl5uSZPnqyf//znXssOhfc6VJF89MPkccMmDKS93tTX1yspKSnY4RkXzu82GMLlvVqWpcWLF2vnzp16/fXXlZqa+pV1wvndDqS93oTL+/0yy7LU2dnp9Wfh/F6HPEMTXcPGL3/5S2vYsGHW5s2brcOHD1vLli2zLrroIuvPf/6zZVmWtXLlSuvee+91lz969Kg1YsQIq7i42Dp8+LC1efNma9iwYdZLL71kqgl+8be9P/vZz6xdu3ZZH3zwgfX73//eWrlypSXJ2rFjh6km+Kyjo8Oqr6+36uvrLUnWunXrrPr6euv48eOWZQ2td+tvW8P5vf7gBz+wEhISrL1791oul8t9nTlzxl1mKL3bgbQ3XN9vaWmptX//fuvYsWPW7373O2vVqlVWVFSUtWfPHsuyhtZ7HepIPnywYcMGa/z48VZsbKx10003eSxhW7BggXXbbbd5lN+7d681ZcoUKzY21rrqqqusyspKmyMOjD/tffTRR61rrrnGiouLsy699FLrlltusX79618biNp/vcsNv3wtWLDAsqyh9W79bWs4v1dv7ZRkPf/88+4yQ+ndDqS94fp+Fy5c6P7ddNlll1kzZ850Jx6WNbTe61DnsKy/zb4BAACwAXM+AACArUg+AACArUg+AACArUg+AACArUg+AACArUg+AACArUg+AACArUg+AACArUg+AACArUg+gAgyffp0LVu2rM/93bt3c8Q4ANuQfAAAAFuRfADw8Nvf/lYzZszQJZdcovj4eGVkZKi2ttZ0WACGkBjTAQAILd/73vc0ZcoUVVZWKjo6Wg0NDRo2bJjpsAAMISQfADw0NjZqxYoVmjRpkiTpuuuuMxwRgKGGYRcAHkpKSlRQUKA77rhDP/3pT/XRRx+ZDgnAEEPyAUSQ+Ph4tbW19bn/6aefKj4+XpK0Zs0avf/++7rrrrv0+uuv6/rrr9euXbvsDhXAEEbyAUSQSZMmeZ08+s4772jixInuzxMmTFBxcbH27Nmjb33rW3r++eftDBPAEEfyAUSQoqIiffTRR1q0aJF++9vf6oMPPtCGDRu0efNmrVixQp999pkWL16svXv36vjx4zp48KDeeecdpaWlmQ4dwBDisCzLMh0EAPvU1dWprKxM9fX1+vzzzzVhwgQ9+OCD+s53vqOzZ89qwYIFOnjwoD755BONGTNG3/rWt/T4448rLi7OdOgAhgiSDwAAYCuGXQAAgK1IPgAAgK1IPgAAgK1IPgAAgK1IPgAAgK1IPgAAgK1IPgAAgK1IPgAAgK1IPgAAgK1IPgAAgK1IPgAAgK3+f57RExEMlQeWAAAAAElFTkSuQmCC", - "text/plain": [ - "<Figure size 640x480 with 2 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "gap_da = xr.DataArray(data=gap, coords=dict(Us=Us, Vs=Vs))\n", - "gap_da.plot(x=\"Us\", y=\"Vs\", vmin=0, vmax=1)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "a661ac28", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "<matplotlib.collections.QuadMesh at 0x14deef590>" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAG2CAYAAABRfK0WAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA90UlEQVR4nO3de3hU1b3/8c8QyCQoicVILiWEqOVi09o0OUqwFFCJBEvrpYrlPFwqsdKI/CBFy6VHAqc11SJNFbmdctFTtbTGWK1UyPMglwqekphYRcRLI0khMQ3VcBETktm/P2imDtkZkswke2Xyfj3Peh5nZ63Z38Xm8vW71t7bZVmWJQAAAAP1cToAAACAtpCoAAAAY5GoAAAAY5GoAAAAY5GoAAAAY5GoAAAAY5GoAAAAY5GoAAAAY5GoAAAAY5GoAAAAY5GoAADQS+3evVuTJ09WQkKCXC6Xnn/++fOO2bVrl9LS0hQREaFLL71Ua9eu7dIYSVQAAOilTp06pSuvvFKrVq1qV/+KigpNmjRJY8aMUVlZmRYvXqy5c+eqsLCwy2J08VJCAADgcrlUVFSkm266qc0+P/7xj/XCCy/o4MGD3mOzZ8/WG2+8oX379nVJXH275FsN5vF4dPToUQ0YMEAul8vpcAAABrMsSydOnFBCQoL69Om6RYjPPvtMjY2NAX+PZVmt/m1zu91yu90Bf7ck7du3T5mZmT7HbrjhBm3YsEFnzpxRv379gnKez+t1icrRo0eVmJjodBgAgB6kqqpKgwcP7pLv/uyzz5ScdKFqapsD/q4LL7xQJ0+e9Dm2dOlS5eXlBfzdklRTU6PY2FifY7GxsWpqalJdXZ3i4+ODcp7P63WJyoABAyRJX7vlvxTWL8LhaOx5wpyOwD8Xi4WdZhlexPs01twALcP/XDSHOx2Bf839zf6D23RRk9Mh2PKc/kxH78v3/tvRFRobG1VT26zDpUMVNaDzVZvjJzxKSvtQVVVVioqK8h4PVjWlxbkVm5YdJF21StHrEpWWX8iwfhEKCzczUXEZ/hcyiUrnmZ6ohLnNDdD0REXB/bcg6KwIs//g9ok0M1Fp0R1bBS4c4NKFAzp/Ho/Ojo2KivJJVIIpLi5ONTU1Psdqa2vVt29fXXzxxV1yzl6XqAAAYKJmy6PmAPLJZssTvGDakJGRoRdffNHn2Pbt25Went4l+1Mkbk8GAMAIHlkBt446efKkysvLVV5eLuns7cfl5eWqrKyUJC1atEjTp0/39p89e7YOHz6s3NxcHTx4UBs3btSGDRu0YMGCoPwa2KGiAgBAL1VSUqLx48d7P+fm5kqSZsyYoc2bN6u6utqbtEhScnKytm7dqvnz5+vxxx9XQkKCHn30Ud16661dFiOJCgAABvDIo0AWbzozety4cfL3OLXNmze3OjZ27Fi9/vrrHT5XZ5GoAABggGbLUnMAz2ANZKzJ2KMCAACMRUUFAAADdHZD7OfHhyISFQAADOCRpWYSlVZY+gEAAMaiogIAgAFY+rFHogIAgAG468ceSz8AAMBYVFQAADCA518tkPGhiEQFAAADNAd4108gY01GogIAgAGaLQX49uTgxWIS9qgAAABjUVEBAMAA7FGxR6ICAIABPHKpWa6Axociln4AAICxqKgAAGAAj3W2BTI+FJGoAABggOYAl34CGWsyln4AAICxqKgAAGAAKir2SFQAADCAx3LJYwVw108AY03G0g8AADAWFRUAAAzA0o89EhUAAAzQrD5qDmChozmIsZiERAUAAANYAe5RsdijAgAA0L2oqAAAYAD2qNgjUQEAwADNVh81WwHsUQnRR+iz9AMAAIxFRQUAAAN45JIngPqBR6FZUiFRAQDAAOxRsedoorJ792794he/UGlpqaqrq1VUVKSbbrqpXWNfffVVjR07VikpKSovL+/wuT1hkiusw8MgqbmfuX8Y+jSZ/X8Upy8x99dOkkz+H7IQvfOy2wSw9aFbuPp5nA7BlqvJzLh6E0d/6546dUpXXnmlVq1a1aFx9fX1mj59uq677rouigwAgO7Vspk2kBaKHK2oZGVlKSsrq8Pj7r77bk2dOlVhYWF6/vnngx8YAADd7OwelQBeShiiSz89Lv3atGmTPvjgAy1durRd/RsaGnT8+HGfBgAAeoYetZn2vffe08KFC7Vnzx717du+0PPz87Vs2bIujgwAgMB4AnzXT6je9dNjKirNzc2aOnWqli1bpmHDhrV73KJFi1RfX+9tVVVVXRglAACd49QeldWrVys5OVkRERFKS0vTnj172uy7c+dOuVyuVu2dd97p7LTPq8dUVE6cOKGSkhKVlZVpzpw5kiSPxyPLstS3b19t375d1157batxbrdbbre7u8MFAKBDPOrT7c9R2bJli+bNm6fV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2/5mzJhhjR071qf/zp07rdTUVCs8PNwaOnSotWbNmm6OODAdme9DDz1kXXbZZVZERIT1hS98wfrGN75hvfTSSw5E3XEtt2ie22bMmGFZVmhd247OtSdfV7t5SrI2bdrk7RNK17Yz8+2p1/fOO+/0/t10ySWXWNddd503SbGs0Lqu+DeXZf1rZxEAAIBh2KMCAACMRaICAACMRaICAACMRaICAACMRaICAACMRaICAACMRaICAACMRaICAACMRaIC9CLjxo3TvHnzWh1//vnneZssACORqAAAAGORqADw8cYbb2j8+PEaMGCAoqKilJaWppKSEqfDAtBL9XU6AABm+c///E+lpqZqzZo1CgsLU3l5ufr16+d0WAB6KRIVAD4qKyt13333acSIEZKkL33pSw5HBKA3Y+kHgI/c3FxlZ2fr+uuv189//nN98MEHTocEoBcjUQF6kaioKNXX17c6/sknnygqKkqSlJeXpwMHDujGG2/Ujh07dMUVV6ioqKi7QwUASSQqQK8yYsQI242x+/fv1/Dhw72fhw0bpvnz52v79u265ZZbtGnTpu4MEwC8SFSAXiQnJ0cffPCB7rnnHr3xxht699139fjjj2vDhg267777dPr0ac2ZM0c7d+7U4cOH9eqrr2r//v0aOXKk06ED6KVclmVZTgcBoPuUlpZqyZIlKisr02effaZhw4bpRz/6ke644w41NjZqxowZevXVV/XRRx8pJiZGt9xyi37xi18oIiLC6dAB9EIkKgAAwFgs/QAAAGORqAAAAGORqAAAAGORqAAAAGORqAAAAGORqAAAAGORqAAAAGORqAAAAGORqAAAAGORqAAAAGORqAAAAGORqAAAAGP9f2R72PIXNNy5AAAAAElFTkSuQmCC", - "text/plain": [ - "<Figure size 640x480 with 2 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "np.log10(gap_da).plot(x=\"Us\", y=\"Vs\", vmin=-3, vmax=1) " - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "18191ba0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.02672641009348376" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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Qsp/Dv3n+iwuLmbr1q02uT6XLFlCUFAQgwYNuup0trz+gAqttw4dOuDi4nLJNElJSRw9etQm1u1/S8iZM2f4888/CQgIuOZzjh07RklJic2u1/99X9r6OvynL774gg4dOtCmTZtrTmtN6/Fa2wer+SxWySGvNmTFihWai4uL9sUXX2jHjx/XJk+erHl5eWnnz59XHe26jBs3TjMYDNqWLVu0pKSk8lt+fr6maZqWk5OjPf3009qOHTu0mJgYbfPmzVrXrl212rVra0ajUXH6a3v66ae1LVu2aOfOndOioqK0wYMHaz4+PuXr66233tIMBoO2atUq7ciRI9r999+vhYSE2MSy/ZPJZNLq1q2rTZs27ZL7bXX95eTkaAcOHNAOHDigAdr777+vHThwoPyskYqst7Fjx2p16tTR/vzzT23//v1anz59tDZt2milpaWqFqvc1ZavpKREu+OOO7Q6depoBw8evORzWVRUpGmapp09e1abNWuWtmfPHi0mJkb77bfftKZNm2rt2rWziuXTtKsvY0Xfl9a8DjXt2u9TTdO07OxszdPTU1uwYMG/nm/t6/Fa2wdNs47PosMVEU3TtHnz5mn16tXTXF1dtfbt219yqqutAS57W7JkiaZpmpafn6/1799fq1mzpubi4qLVrVtXe+SRR7S4uDi1wSvo3nvv1UJCQjQXFxctNDRUGzZsmHbs2LHyx81ms/bKK69owcHBmpubm9ajRw/tyJEjChNfn3Xr1mmAdurUqUvut9X1t3nz5su+Lx955BFN0yq23goKCrSJEydq/v7+moeHhzZ48GCrWe6rLV9MTMwVP5ebN2/WNE3T4uLitB49emj+/v6aq6urFhERoT311FNaenq62gX7h6stY0Xfl9a8DjXt2u9TTdO0RYsWaR4eHlpWVta/nm/t6/Fa2wdNs47Pou4/YYUQQgghqp1DHSMihBBCCOsiRUQIIYQQykgREUIIIYQyUkSEEEIIoYwUESGEEEIoI0VECCGEEMpIERFCCCGEMlJEhBBCCKGMFBEhhBBCKCNFRAghhBDKSBERQgghhDJSRIQQQgihzP8BtqFB/E75qwoAAAAASUVORK5CYII=", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#Single shot calculation\n", - "params = dict(U=0, V=1)\n", - "filling = 2 \n", - "\n", - "h_int = utils.builder_to_tb(int_builder, params)\n", - "model = Model(h_0, h_int, filling)\n", - "mf_guess = utils.generate_guess(frozenset(h_int), len(list(h_0.values())[0]))\n", - "mf_sol = solver(model, mf_guess, nK=30)\n", - "\n", - "ks = np.linspace(-np.pi, np.pi, 200)\n", - "hkfunc = tb2kfunc(addTb(h_0, mf_sol))\n", - "hkarray = np.array([hkfunc((kx, -kx)) for kx in ks])\n", - "vals = np.linalg.eigvalsh(hkarray)\n", - "plt.plot(vals)\n", - "utils.calc_gap(vals, E_F=0)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "e183c3cb", - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "import numpy as np\n", - "from codes.model import Model\n", - "from codes import kwant_examples\n", - "from codes.kwant_helper import utils\n", - "import timeit\n", - "import memray\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "078dd782", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n", - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n", - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n", - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n", - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n", - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n", - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n", - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n", - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n", - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n", - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n", - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n", - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n", - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n", - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n", - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n", - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n", - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n", - "Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.\n" - ] - } - ], - "source": [ - "graphene_builder, int_builder = kwant_examples.graphene_extended_hubbard()\n", - "\n", - "params = {\"U\": 0.5, \"V\": 1.1}\n", - "filling = 2\n", - "nK = 300\n", - "\n", - "h_int = utils.builder_to_tb(int_builder, params)\n", - "h_0 = utils.builder_to_tb(graphene_builder)\n", - "guess = utils.generate_guess(frozenset(h_int), len(list(h_0.values())[0]))\n", - "\n", - "model = Model(h_0, h_int, filling)\n", - "\n", - "\n", - "def scf_loop():\n", - " model.mfield(guess, nK=nK)\n", - "\n", - "\n", - "# %% Memory profile\n", - "with memray.Tracker(\"memoryProfile.bin\"):\n", - " scf_loop()\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "3455735e", - "metadata": {}, - "outputs": [], - "source": [ - "# %% Time profiler\n", - "profiler = Profiler()\n", - "\n", - "profiler.start()\n", - "scf_loop()\n", - "profiler.stop()\n", - "profiler.write_html(path=\"timeProfile.html\")\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "75fe9023", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Single SCF loop takes 7.120591291008168 whereas a single diagonalization of a corresponding system takes 0.024635875000967644\n" - ] - } - ], - "source": [ - "# %%\n", - "number = 1\n", - "\n", - "timeSCF = timeit.timeit(scf_loop, number=number) / number\n", - "\n", - "H = np.random.rand(nK, nK)\n", - "H += H.T.conj()\n", - "timeDiag = timeit.timeit(lambda: np.linalg.eigh(H), number=number) / number\n", - "\n", - "print(\n", - " f\"Single SCF loop takes {timeSCF} whereas a single diagonalization of a corresponding system takes {timeDiag}\"\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f650872f", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.13" - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "state": {}, - "version_major": 2, - "version_minor": 0 - } - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/mexican_hat.ipynb b/examples/mexican_hat.ipynb deleted file mode 100644 index 18baebe221e4d5330f7bc057c206b3fc7282d056..0000000000000000000000000000000000000000 --- a/examples/mexican_hat.ipynb +++ /dev/null @@ -1,162 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from codes.solvers import solver\n", - "from codes.tb import transforms, utils\n", - "from codes.model import Model\n", - "import codes.model\n", - "from codes.tb.tb import add_tb, scale_tb\n", - "from codes import mf\n", - "from codes import observables\n", - "import codes.tb.transforms\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "def old_total_energy(h, rho):\n", - " \"\"\"\n", - " Compute total energy.\n", - "\n", - " Paramters:\n", - " ----------\n", - " h : nd-array\n", - " Hamiltonian.\n", - " rho : nd-array\n", - " Density matrix.\n", - "\n", - " Returns:\n", - " --------\n", - " total_energy : float\n", - " System total energy computed as tr[h@rho].\n", - " \"\"\"\n", - " return np.sum(np.trace(h @ rho, axis1=-1, axis2=-2)).real / np.prod(rho.shape[:-2])\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "def total_energy(ham_tb, rho_tb): \n", - " return np.real(observables.expectation_value(rho_tb, ham_tb))\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "U0 = 1\n", - "filling = 2\n", - "\n", - "hopp = np.kron(np.array([[0, 1], [0, 0]]), np.eye(2))\n", - "h_0 = {(0,): hopp + hopp.T.conj(), (1,): hopp, (-1,): hopp.T.conj()}\n", - "h_int_U0 = {\n", - " (0,): U0 * np.kron(np.eye(2), np.ones((2, 2))),\n", - " }\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlQAAAGwCAYAAABvpfsgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABImElEQVR4nO3de3hU5bn38d9KQs4kiJEShBwAFSm4g6ASqhuiUoMUMUW2Si85CLRQqYeqVWwraGvxgIhFpdC6o1apaBVka62wpaGthU2oBBElAhLBpBbR18QcSEiy3j8wYxImyUzmsA7z/VxXLieZNck9PmQ9d57nXvcyTNM0BQAAgG6LsjoAAAAApyOhAgAACBAJFQAAQIBIqAAAAAJEQgUAABAgEioAAIAAkVABAAAEKMbqACJFc3OzKioq1LNnTxmGYXU4AADAB6Zp6ssvv1S/fv0UFdXxOhQJVZhUVFRowIABVocBAAC64fDhw+rfv3+Hz5NQhUnPnj0lnRiQlJQUi6MBwqOmpkb9+vWTdOKPiqSkJIsjgr8YQ0S6qqoqDRgwwDOPd4SEKkxatvlSUlJIqBAxoqOjPY9TUlKYjB2IMQRO6Kpch6J0AACAAJFQAQAABIgtPwAhExMToxkzZngew3kYQ8A3hmmaptVBRIKqqiqlpqaqsrKSGioAABzC1/mbLT8AAIAAsX4LIGRM01Rtba0kKTExkaa2DsQYAr5hhQpAyNTW1io5OVnJycmeSRnOwhgCviGhAgAACBAJFQAAQIBIqAAAAAJEQgUAABAgEioAAIAA0TbB4Uo2rdGxfUWKP2OccsZPszocAADCzg5zIQmVg5VsWqOct+ar0YxSzJG1KpFIqmAr0dHRuuqqqzyP4TyMIezOLnMhCZWDHdtXdOIfkNGsRjNKx/ZvkUioYCPx8fF68cUXrQ4DAWAMYXd2mQsdUUNVVlam2bNnKzs7WwkJCRo0aJAWLVqkhoaGTl83c+ZMGYbR5mP06NFejzVNUxMmTJBhGFq/fn2b56644gplZGQoPj5e6enpuu6661RRURGst9dt8WeM8/wDijGaFT94rNUhAQAQVnaZCx2xQrV37141Nzdr1apVGjx4sN59913NnTtXNTU1Wrp0aaevzc/PV2Fhoefz2NhYr8ctX768w1sq5OXl6a677lJ6errKy8t122236aqrrtI//vGP7r+pIMgZP00lko7t36L4wWPZ7gMARBy7zIWGaZqmJT85QA899JBWrlypDz/8sMNjZs6cqS+++OKkFaf2du3ape985zsqLi5Wenq61q1bpyuvvLLD4zds2KArr7xS9fX16tGjh9dj6uvrVV9f7/m8qqpKAwYM6PJu1d1lh4I8oL2amholJydLkqqrq5WUlGRxRPAXYwi7C/X8V1VVpdTU1C7nb0esUHlTWVmp3r17d3lcUVGR+vTpo169emns2LG677771KdPH8/ztbW1uvbaa/XYY4+pb9++XX6/zz//XM8995zGjBnTYTIlSUuWLNE999zj25sJkF0K8gAACCc7zX+OqKFq78CBA1qxYoXmzZvX6XETJkzQc889p82bN+vhhx9WcXGxLr744jYrR7fccovGjBmjyZMnd/q97rjjDiUlJenUU0/VoUOH9Morr3R6/MKFC1VZWen5OHz4sO9v0E9eC/IAAHA5O81/liZUixcvPqlovP3Hjh072rymoqJC+fn5mjp1qubMmdPp97/66qs1ceJEDRs2TJMmTdLrr7+uDz74QK+99pqkE1t3mzdv1vLly7uM9fbbb9fOnTu1ceNGRUdHa/r06epstzQuLk4pKSltPkLFLgV5AACEk53mP0u3/BYsWKBrrrmm02OysrI8jysqKpSXl6fc3FytXr3a75+Xnp6uzMxM7du3T5K0efNmHThwQL169Wpz3JQpU3TRRRepqKjI87W0tDSlpaXpzDPP1Nlnn60BAwZo27Ztys3N9TuOYLNLQR4AAOFkp/nP0oSqJUnxRXl5ufLy8jRy5EgVFhYqKsr/xbXPPvtMhw8fVnp6uiTpzjvvPGmVa/jw4XrkkUc0adKkDr9Py8pU661Dq+WMn0YPKgBAxLHL/OeIovSKigqNGzdOGRkZWrp0qT799FPPc60LyYcMGaIlS5aooKBA1dXVWrx4saZMmaL09HSVlZXprrvuUlpamgoKCjyv9VaInpGRoezsbEnS9u3btX37dl144YU65ZRT9OGHH+ruu+/WoEGDbLE61RpX+gEAIoXd5jxHJFQbN27U/v37tX//fvXv37/Nc63rmEpLS1VZWSnpxC0Sdu/erWeeeUZffPGF0tPTlZeXp7Vr16pnz54+/+yEhAS9/PLLWrRokWpqapSenq78/Hw9//zziouLC84bDAI7XekAtIiOjtbll1/u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/Oe6+OKL9c9//lNxcXGSpFtuuUVjxozR5MmTO/w+N910k84991ydcsop2r59uxYuXKiDBw/qd7/7XYevWbJkie65557uvcEIw72jAMAanH+DxzBN068mQCkpKSopKdHAgQMD/uGLFy/uMukoLi7WqFGjPJ9XVFRo7NixGjt2bKcJjTf/+te/lJmZqeeff17f/e53tWHDBt16663auXOnpybKMAytW7dOV155ZYff56WXXtJVV12lo0eP6tRTT/V6TH19verr6z2fV1VVacCAAaqsrFRKSopfcUeCkk1rvu5Jde4MtvxcoqamxvO7VV1draSkJIsjgr8YQ/dq6T1l9kik91QnqqqqlJqa2uX87fcK1dSpU7Vx40bNmzcvoAAlacGCBbrmmms6PSYrK8vzuKKiQnl5ecrNzfX0wfJHenq6MjMztW/fPknS5s2bdeDAAfXq1avNcVOmTNFFF12koqIir9+n5UrB/fv3d5hQxcXFeVbB4Bt6UgFAeNB7Kvj8TqgGDx6sn//859q2bZuGDx9+0hUfN954o8/fKy0tTWlpaT4dW15erry8PI0cOVKFhYWKivK7/EufffaZDh8+7Ck8v/POOzVnzpw2xwwfPlyPPPKIJk2a1OH32blzpyR1WMAO/3ndx+eXGwBCgnNu8PmdUK1evVrJycnasmWLtmxpW7xmGIZfCZWvKioqNG7cOGVkZGjp0qX69NNPPc+1LiQfMmSIlixZooKCAlVXV2vx4sWaMmWK0tPTVVZWprvuuktpaWkqKCjwvNZbIXpGRoays7MlSVu3btW2bduUl5en1NRUFRcX65ZbbtEVV1yhjIyMoL/XSMU+vjvFxcXp1Vdf9TyG8zCG7sQ5N/j8TqgOHjwYijg6tXHjRu3fv1/79+9X//792zzXugSstLRUlZWVkk7cLmH37t165pln9MUXXyg9PV15eXlau3atX/ccjIuL09q1a3XPPfeovr5emZmZmjt3rn7yk58E581BUtueVOzju0dMTIwmTpxodRgIAGPoTpxzg8/vonR0j69Fbfi6UDL+jHH8kgNACHCe9Z2v87fPhUhDhw7V559/7vn8+9//fputtyNHjigxMbGb4QIntBRKjvr3i8p5a75KNq2xOiQE4Pjx43rqqaf01FNPcdsSh2IM3YfzbGj4nFDt3btXjY2Nns+ff/55ffnll57PTdPUsWPHghsdIg5N5tyloaFBs2bN0qxZs7pshgt7Ygzdh/NsaPh/qdxXvO0UdnYvPMAX3KQTAEKL82xodOtefkCotBRKepp8AgCCpqV2auvps2jmGWQ+J1SGYZy0AsWKFEKFJp8AEFw08wwtnxMq0zR1ySWXKCbmxEvq6uo0adIkxcbGSlKb+iogEDScA4Dg49waWj4nVIsWLWrzubebCU+ZMiXwiBDxaDgHAMHHuTW0up1QAaHSuuGcGZMgY18R234AEAQ7E3IlSca50zmnBhlF6bCllqTKs99/ZC1JlQPFxcXphRde8DyG8zCG7nBS/ZSmWx2S65BQwbbY73e+mJgYTZ061eowEADG0B04n4Zet/tQAaFGrxQACA7Op6HHChVsi55UztfY2Kh169ZJkgoKCjxXCcM5GEPno/dUePCbAdujJ5Vz1dfX67/+678kSdXV1UzGDsQYOhu9p8LHp9+MX//61z5/wxtvvLHbwQDtse8PAN3HOTR8fEqoHnnkEZ++mWEYJFQIKvqmAED3cQ4NH58SqoMHD4Y6DsArelIBQGDoPRUebIbD9uhJBQD+o/dUeHUrofr444+1YcMGHTp0SA0NDW2eW7ZsWVACA1qjDgAA/MN5M7z8TqjefPNNXXHFFcrOzlZpaamGDRumsrIymaapc889NxQxAp46gCbTUIzRLDMmweqQAMC2SjatUdyXh+g9FUZ+J1QLFy7UrbfeqnvvvVc9e/bUSy+9pD59+uh73/ue8vPzQxEjoJzx07S1bLtyywvVZBrKLS9Uyabz2fazudjYWBUWFnoew3kYQ+dpvdUnQ9qdeAH1U2Hgd0L1/vvv6w9/+MOJF8fEqK6uTsnJybr33ns1efJkzZ8/P+hBApJkHK9l+dphevTooZkzZ1odBgLAGDpP+62++pRMjeZcGXJ+33omKSlJ9fX1kqR+/frpwIEDnueOHj0avMiAdrh1AgB0jXOlNfxeoRo9erTeeustDR06VBMnTtStt96q3bt36+WXX9bo0aNDESMgiRYKTtTY2Kg33nhDknTZZZfRZduBGENnolVC+Pn9m7Fs2TJVV1dLkhYvXqzq6mqtXbtWgwcP9rkBKNBdtFBwlvr6en3nO9+RxG1LnIoxdBZaJVjH79+MgQMHeh4nJibqiSeeCGpAQFe4FBgAvOP8aB2/a6gGDhyozz777KSvf/HFF22SLSBUqA8AAO84P1rH7xWqsrIyNTU1nfT1+vp6lZeXByUooDMt237m28/IkGl1OABgCyWb1ujYviJtPX2WjMY6xQ8eSzlEGPmcUG3YsMHz+I033lBqaqrn86amJr355pvKysoKanBAZ0bUbT3xV9hb26ijAhDRTqqd+tZKzolh5nNCdeWVV0qSDMPQjBkz2jzXo0cPZWVl6eGHHw5qcEBHqBMAgK9xTrSezwlVc3OzJCk7O1vFxcVKS0sLWVBAV1puRUOdAABwTrQDv2uoDh48GIo4AL/Qk8oZYmNj9dhjj3kew3kYQ+eg95S1DNM0/a7q3bJli5YuXar3339fhmHo7LPP1u23366LLrooFDG6QlVVlVJTU1VZWamUlBSrw3EN6gYARDrOg6Hl6/ztd9uEZ599VpdeeqkSExN14403asGCBUpISNAll1yiNWvWBBQ04C+vdQMAEEE4D9qD31t+9913nx588EHdcsstnq/ddNNNWrZsmX7xi19o2jSyYoRPS91Ak2koxmiWGZNgdUhopampSX/7298kSRdddJGio6Mtjgj+YgztrWTTGsV9eYjeUzbg95ZfXFyc9uzZo8GDB7f5+v79+zVs2DAdO3YsqAG6BVt+obP1tzcrt7xQTaahaMNkudtGampqlJycLOnEbUuSkpIsjgj+Ygztq/1W386EXOqnQiBkW34DBgzQm2++edLX33zzTQ0YMMDfbwcEzDheq0YzStGGyXI3gIjRfquvPiWTZMpCPm/5XX/99Xr00Ud166236sYbb1RJSYnGjBkjwzD097//XU899ZQeffTRUMYKeMXlwgAiEec+e/E5oXr66ad1//33a/78+erbt68efvhhvfDCC5Kks88+W2vXrtXkyZNDFijQEVooAIhUtEqwD58TqtalVgUFBSooKAhJQEB3tCRVnnqCI2tJqgC41kmtEjTd6pAinl81VIZhhCoOIGBcOgwgUnC+sx+/2iaceeaZXSZVn3/+eUABAd1FPQGASMH5zn78SqjuuecepaamhioWICAt237m28/IkN83AEAI9OjRQw8++KDnMZyHMbSfkk1rdGxfkbaePktGY53iB4+lvMEGfO5DFRUVpU8++UR9+vQJdUyuRB+q8OAWDADcjHNc+AW9DxX1U3AC6goAuBnnOPvyOaHqxj2UgbCLP2Nc21swVJWpZBP3mLRKU1OT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UAEImWPHjmnixImaOHGijh07ZnU46AbGEPANNVQAQqapqUl/+tOfPI/hPIwh4BtWqAAAAAJEQgUAABAgEioAAIAAkVABAAAEiIQKAAAgQFzlFyYt96CuqqqyOBIgfFp32K6qquIqMQdiDBHpWubtlnm8I4bZ1REIio8//lgDBgywOgwAANANhw8fVv/+/Tt8noQqTJqbm1VRUaGePXvKMIygfd+qqioNGDBAhw8fVkpKStC+r524/T3y/pzP7e/R7e9Pcv975P11n2ma+vLLL9WvXz9FRXVcKcWWX5hERUV1mtkGKiUlxZW/JK25/T3y/pzP7e/R7e9Pcv975P11T2pqapfHUJQOAAAQIBIqAACAAJFQOVxcXJwWLVqkuLg4q0MJGbe/R96f87n9Pbr9/Unuf4+8v9CjKB0AACBArFABAAAEiIQKAAAgQCRUAAAAASKhAgAACBAJlUvV19crJydHhmGopKTE6nCC5oorrlBGRobi4+OVnp6u6667ThUVFVaHFRRlZWWaPXu2srOzlZCQoEGDBmnRokVqaGiwOrSguu+++zRmzBglJiaqV69eVocTsCeeeELZ2dmKj4/XyJEj9be//c3qkILmr3/9qyZNmqR+/frJMAytX7/e6pCCasmSJTrvvPPUs2dP9enTR1deeaVKS0utDitoVq5cqXPOOcfT7DI3N1evv/661WGFzJIlS2QYhm6++WZLfj4JlUv95Cc/Ub9+/awOI+jy8vL0wgsvqLS0VC+99JIOHDigq666yuqwgmLv3r1qbm7WqlWrtGfPHj3yyCP6zW9+o7vuusvq0IKqoaFBU6dO1fz5860OJWBr167VzTffrJ/+9KfauXOnLrroIk2YMEGHDh2yOrSgqKmp0X/8x3/oscceszqUkNiyZYtuuOEGbdu2TZs2bVJjY6O+/e1vt7khtJP1799f999/v3bs2KEdO3bo4osv1uTJk7Vnzx6rQwu64uJirV69Wuecc451QZhwnT/96U/mkCFDzD179piSzJ07d1odUsi88sorpmEYZkNDg9WhhMSDDz5oZmdnWx1GSBQWFpqpqalWhxGQ888/35w3b16brw0ZMsS88847LYoodCSZ69atszqMkDpy5IgpydyyZYvVoYTMKaecYv7ud7+zOoyg+vLLL80zzjjD3LRpkzl27FjzpptusiQOVqhc5t///rfm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", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "nk = 100\n", - "guess = utils.generate_guess(frozenset(h_int_U0), len(h_int_U0[(0,)]))\n", - "\n", - "_model = Model(h_0, h_int_U0, filling=filling)\n", - "mf_sol_groundstate = solver(_model, mf_guess=guess, nk=nk, optimizer_kwargs={\"M\": 0})\n", - "\n", - "@np.vectorize\n", - "def mfRescaled(alpha, mf0=mf_sol_groundstate):\n", - " hamiltonian = add_tb(h_0, scale_tb(mf0,alpha))\n", - " rho, _ = codes.mf.density_matrix(hamiltonian, filling=filling, nk=nk)\n", - " hamiltonian = add_tb(h_0, scale_tb(mf0, np.sign(alpha)))\n", - " return total_energy(hamiltonian, rho)\n", - "\n", - "alphas = np.linspace(-4, 4, 301)\n", - "plt.plot(alphas, mfRescaled(alphas), 'o', ms=2)\n", - "plt.plot(-alphas, mfRescaled(alphas), 'o', ms=2)\n", - "plt.axvline(x=1, c=\"k\", ls=\"--\")\n", - "plt.axvline(x=-1, c=\"k\", ls=\"--\")\n", - "plt.ylabel(\"Total Energy\")\n", - "plt.xlabel(r\"$\\alpha$\")\n", - "# plt.ylim(-4.6, -4.5)\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(alphas[:-1], np.diff(mfRescaled(alphas)))\n", - "# plt.plot(-alphas[:-1], -np.diff(mfRescaled(alphas)))\n", - "plt.axhline(0, ls='--', c='k')\n", - "plt.axvline(x=1, c=\"k\", ls=\"--\")\n", - "plt.axvline(x=-1, c=\"k\", ls=\"--\")\n", - "# plt.ylim(-4, -2)\n", - "plt.show()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "locenv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.11" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -}