diff --git a/test.ipynb b/test.ipynb index e6047a2..63c260b 100644 --- a/test.ipynb +++ b/test.ipynb @@ -2,23 +2,16 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 99, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[Daniels-Air:55387] shmem: mmap: an error occurred while determining whether or not /var/folders/yh/dx7xl94n3g52ts3td8qcxjcc0000gn/T//ompi.Daniels-Air.501/jf.0/1750007808/sm_segment.Daniels-Air.501.684f0000.0 could be created.\n" - ] - }, { "data": { "text/plain": [ "'0.14.3'" ] }, - "execution_count": 1, + "execution_count": 99, "metadata": {}, "output_type": "execute_result" } @@ -65,7 +58,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 100, "metadata": {}, "outputs": [ { @@ -74,7 +67,7 @@ "-12.806878959999999" ] }, - "execution_count": 2, + "execution_count": 100, "metadata": {}, "output_type": "execute_result" } @@ -89,7 +82,28 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-5.82448514" + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Ef = dat.read_fermi_level()\n", + "Ef" + ] + }, + { + "cell_type": "code", + "execution_count": 102, "metadata": {}, "outputs": [ { @@ -116,13 +130,13 @@ "[0 0 1] --» [array([1, 0, 0]), array([0, 1, 0])]\n", "================================================================================================================================================================\n", "Parameters for the contour integral:\n", - "Number of k points: 20\n", + "Number of k points: 10\n", "k point directions: xy\n", "Ebot: -13\n", - "Eset: 100\n", + "Eset: 600\n", "Esetp: 10000\n", "================================================================================================================================================================\n", - "Setup done. Elapsed time: 3.879105916 s\n", + "Setup done. Elapsed time: 3484.176097333 s\n", "================================================================================================================================================================\n" ] } @@ -149,7 +163,7 @@ "]\n", "magnetic_entities = [\n", " dict(atom=3, l=2),\n", - " dict(atom=4, l=2),\n", + " dict(atom=4),\n", " dict(atom=5, l=2),\n", "]\n", "pairs = [\n", @@ -162,10 +176,10 @@ " dict(ai=1, aj=2, Ruc=np.array([-1, 0, 0])),\n", "]\n", "# Brilloun zone sampling and Green function contour integral\n", - "kset = 20\n", + "kset = 10\n", "kdirs = \"xy\"\n", "ebot = -13\n", - "eset = 100\n", + "eset = 600\n", "esetp = 10000\n", "################################################################################\n", "#################################### INPUT #####################################\n", @@ -215,7 +229,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 103, "metadata": {}, "outputs": [ { @@ -305,14 +319,14 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 104, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Hamiltonian and exchange field rotated. Elapsed time: 4.926466833 s\n", + "Hamiltonian and exchange field rotated. Elapsed time: 3484.986699166 s\n", "================================================================================================================================================================\n" ] } @@ -372,12 +386,12 @@ "\n", "\n", "# symmetrizing Hamiltonian and overlap matrix to make them hermitian\n", - "for i in range(dh.lattice.sc_off.shape[0]):\n", - " j = dh.lattice.sc_index(-dh.lattice.sc_off[i])\n", - " h1, h1d = hh[i], hh[j]\n", - " hh[i], hh[j] = (h1 + h1d.T.conj()) / 2, (h1d + h1.T.conj()) / 2\n", - " s1, s1d = ss[i], ss[j]\n", - " ss[i], ss[j] = (s1 + s1d.T.conj()) / 2, (s1d + s1.T.conj()) / 2\n", + "# for i in range(dh.lattice.sc_off.shape[0]):\n", + "# j = dh.lattice.sc_index(-dh.lattice.sc_off[i])\n", + "# h1, h1d = hh[i], hh[j]\n", + "# hh[i], hh[j] = (h1 + h1d.T.conj()) / 2, (h1d + h1.T.conj()) / 2\n", + "# s1, s1d = ss[i], ss[j]\n", + "# ss[i], ss[j] = (s1 + s1d.T.conj()) / 2, (s1d + s1.T.conj()) / 2\n", "\n", "# identifying TRS and TRB parts of the Hamiltonian\n", "TAUY = np.kron(np.eye(NO), tau_y)\n", @@ -414,14 +428,14 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 105, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Site and pair dictionaries created. Elapsed time: 4.962375291 s\n", + "Site and pair dictionaries created. Elapsed time: 3485.081068083 s\n", "================================================================================================================================================================\n" ] } @@ -538,21 +552,21 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 106, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "k loop: 0%| | 0/400 [00:00" + ] + }, + "execution_count": 108, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAawAAAGkCAYAAABtmxHBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACytElEQVR4nO29eZwU1dU+/swwMCAKiMqmIKgg4gIEBFETMfILLokgGqNBg0viG/ctRn0TNJooLvkad42JUZO4JCZiXk2iURTUsIgg7gIqKgoDKgKyDbP0749bt6r63Od23WlmGHo4z+fjR6a7uqruqaru85zznHPKcrlcDgqFQqFQbOEob+4TUCgUCoUiBPqDpVAoFIqSgP5gKRQKhaIkoD9YCoVCoSgJ6A+WQqFQKEoC+oOlUCgUipKA/mApFAqFoiSgP1gKhUKhKAnoD5ZCoVAoSgL6g6VQKBSKkkDJ/mDdcccd6N27N9q2bYvhw4fj5Zdfbu5TAgBMmjQJ+++/P7bbbjt06dIFY8eOxfz58/O22bBhA84++2zssMMO2HbbbXHsscdi2bJlzXTG+bjuuutQVlaGCy64IH5tSzvfTz/9FCeddBJ22GEHtGvXDvvuuy9eeeWV+P1cLocrrrgC3bt3R7t27TBq1CgsXLiw2c63rq4OEydORJ8+fdCuXTvsvvvu+OUvf4l0V7TmPOcXXngB3/nOd9CjRw+UlZXh8ccfz3s/5NxWrFiB8ePHo0OHDujUqRNOP/10rFmzZrOfb01NDS699FLsu+++aN++PXr06IEf/OAHWLJkSbOdb9Y5S/z4xz9GWVkZbr755mY755Dzfeedd3D00UejY8eOaN++Pfbff398/PHH8ftN8b1Rkj9Yf/nLX3DRRRfhyiuvxNy5czFw4ECMHj0ay5cvb+5Tw7Rp03D22Wdj5syZeOaZZ1BTU4NvfetbWLt2bbzNhRdeiCeeeAKPPvoopk2bhiVLlmDcuHHNeNYGs2fPxm9/+1vst99+ea9vSef75Zdf4qCDDkLr1q3x73//G2+//Tb+3//7f9h+++3jbW644QbceuutuPvuuzFr1iy0b98eo0ePxoYNG5rlnK+//nrcdddduP322/HOO+/g+uuvxw033IDbbrttizjntWvXYuDAgbjjjjvo+yHnNn78eLz11lt45pln8OSTT+KFF17AGWecsdnPd926dZg7dy4mTpyIuXPn4rHHHsP8+fNx9NFH5223Oc8365zTmDx5MmbOnIkePXo4720pNgaA999/HwcffDD69++PqVOn4vXXX8fEiRPRtm3beJsm+d7IlSCGDRuWO/vss+O/6+rqcj169MhNmjSpGc+KY/ny5TkAuWnTpuVyuVxu5cqVudatW+ceffTReJt33nknByA3Y8aM5jrN3FdffZXr27dv7plnnskdcsghufPPPz+Xy21553vppZfmDj74YO/79fX1uW7duuVuvPHG+LWVK1fmKisrcw8//PDmOEUHRx11VO60007Le23cuHG58ePH53K5LeucAeQmT54c/x1ybm+//XYOQG727NnxNv/+979zZWVluU8//XSzni/Dyy+/nAOQ++ijj3K5XPOeby7nP+dPPvkkt/POO+fefPPN3K677pr7zW9+E7+3pdn4e9/7Xu6kk07yfqapvjdKjmFt3LgRc+bMwahRo+LXysvLMWrUKMyYMaMZz4xj1apVAIDOnTsDAObMmYOampq88+/fvz969erVrOd/9tln46ijjso7L2DLO9//+7//w9ChQ/Hd734XXbp0weDBg/G73/0ufn/RokWoqqrKO9+OHTti+PDhzWbfAw88EFOmTMGCBQsAAK+99hpeeuklHHHEEVvsOVuEnNuMGTPQqVMnDB06NN5m1KhRKC8vx6xZszb7OUusWrUKZWVl6NSpE4At83zr6+tx8skn45JLLsHee+/tvL8lnXN9fT3++c9/ol+/fhg9ejS6dOmC4cOH54UNm+p7o+R+sD7//HPU1dWha9euea937doVVVVVzXRWHPX19bjgggtw0EEHYZ999gEAVFVVoU2bNvHDY9Gc5//II49g7ty5mDRpkvPelna+H3zwAe666y707dsXTz/9NM4880ycd955eOCBB+Lztee3JZwvAFx22WU44YQT0L9/f7Ru3RqDBw/GBRdcgPHjxwPYMs/ZIuTcqqqq0KVLl7z3Kyoq0Llz52Y//w0bNuDSSy/FiSeeiA4dOgDYMs/3+uuvR0VFBc477zz6/pZ0zsuXL8eaNWtw3XXX4fDDD8d//vMfHHPMMRg3bhymTZsWn29TfG9UbMqJKwrj7LPPxptvvomXXnqpuU/Fi8WLF+P888/HM888kxd/3lJRX1+PoUOH4tprrwUADB48GG+++SbuvvtuTJgwoZnP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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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165dd9kx5wNqampwxhlnIAgCPPDAA809HCfmzJmD3/72t5g7dy4KCgqaezipqK+vBwCUl5fjqquuAgAMGDAAM2fOxIMPPohjjz22ya6dcwxr7733RlFRkaU2WbNmDcrKypppVDYuu+wyvPTSS3jttdew3377RdvLyspQXV2N9evXJ/ZvrvHPmTMHa9euxbe+9S0UFxejuLgYM2bMwD333IPi4mKUlpbuUuPt0qUL+vXrl9jWt2/fSJ2kx7QrPR/XXHNNxLIOO+wwnHPOObjqqqsiRrsrjlnDZ2xlZWWW4Km2thbr1q1rtvHrH6sVK1bglVdeidgVsOuN94033sDatWvRvXv36B1csWIFrr76avTo0WOXG/Pee++N4uLi1PewKb43cu4Hq2XLlhg0aBCmTp0abauvr8fUqVMxdOjQZhyZQhAEuOyyyzBlyhRMmzYNPXv2THw+aNAgtGjRIjH+hQsX4rPPPmuW8Z9wwgn48MMPMW/evOi/wYMHY9y4cdG/d6XxHnPMMVaawKJFi7D//vsDAHr27ImysrLEeDdu3IhZs2Y12/OxdetWFBYmX7WioqJopborjlnDZ2xDhw7F+vXrMWfOnGifadOmob6+HkOGDNnpY9Y/VosXL8arr76KTp06JT7f1cZ7zjnn4IMPPki8g127dsU111yDf//737vcmFu2bIkjjjgi43vYZN9zWcs1mhFPP/10UFJSEjz22GPB/Pnzg4suuijo0KFDUFlZ2dxDCy6++OKgffv2wfTp04PVq1dH/23dujXa58c//nHQvXv3YNq0acG7774bDB06NBg6dGgzjjoJUyUYBLvWeN95552guLg4uPXWW4PFixcHTzzxRLDHHnsEf/7zn6N9br/99qBDhw7BCy+8EHzwwQdBeXl50LNnz2Dbtm3NMubx48cH++67b/DSSy8Fy5YtC5577rlg7733Dn7605/uEmPetGlT8N577wXvvfdeACC46667gvfeey9S1fmM7cQTTwwGDhwYzJo1K3jzzTeDXr16BWedddZOH291dXVw6qmnBvvtt18wb968xDtYVVXVLONNGzMHqhLc2WNOG+9zzz0XtGjRInj44YeDxYsXB/fee29QVFQUvPHGG9E5muJ7Iyd/sIIgCO69996ge/fuQcuWLYMjjzwyePvtt5t7SEEQKAko99+jjz4a7bNt27bgkksu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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "HK, SK = hsk(hamiltonians[2][\"H\"], ss, dh.sc_off, np.array([0.3, 0, 0]))\n", + "\n", + "myhk = dh.Hk(k=np.array([0.3, 0, 0]))\n", + "\n", + "abs(HK - myhk.toarray()).max()\n", + "\n", + "plt.matshow(abs(HK))\n", + "plt.matshow(abs(myhk.toarray()))" + ] + }, + { + "cell_type": "code", + "execution_count": 109, "metadata": {}, "outputs": [ { @@ -641,15 +702,15 @@ "output_type": "stream", "text": [ "Starting matrix inversions\n", - "Total number of k points: 400\n", - "Number of energy samples per k point: 100\n", + "Total number of k points: 100\n", + "Number of energy samples per k point: 600\n", "Total number of directions: 3\n", - "Total number of matrix inversions: 120000\n", + "Total number of matrix inversions: 180000\n", "The shape of the Hamiltonian and the Greens function is 84x84=7056\n", "Memory taken by a single Hamiltonian is: 0.015625 KB\n", "Expected memory usage per matrix inversion: 0.5 KB\n", - "Expected memory usage per k point for parallel inversion: 150.0 KB\n", - "Expected memory usage on root node: 58.59375 MB\n", + "Expected memory usage per k point for parallel inversion: 900.0 KB\n", + "Expected memory usage on root node: 87.890625 MB\n", "================================================================================================================================================================\n" ] }, @@ -657,14 +718,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "k loop: 100%|██████████| 400/400 [04:23<00:00, 1.52it/s]" + "k loop: 100%|██████████| 100/100 [1:39:50<00:00, 59.90s/it] " ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Calculated Greens functions. Elapsed time: 268.00303675 s\n", + "Calculated Greens functions. Elapsed time: 3878.870911625 s\n", "================================================================================================================================================================\n" ] }, @@ -721,6 +782,7 @@ " # calculate Greens function\n", " H = hamiltonian_orientation[\"H\"]\n", " HK, SK = hsk(H, ss, dh.sc_off, k)\n", + " # HK = HK - Ef * SK\n", " # Gk = inv(SK * eran.reshape(eset, 1, 1) - HK)\n", "\n", " # solve Greens function sequentially for the energies, because of memory bound\n", @@ -768,7 +830,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 110, "metadata": {}, "outputs": [ { @@ -799,10 +861,10 @@ "[0 0 1] --» [array([1, 0, 0]), array([0, 1, 0])]\n", "================================================================================================================================================================\n", "Parameters for the contour integral:\n", - "Number of k points: 20\n", + "Number of k points: 10\n", "k point directions: xy\n", "Ebot: -13\n", - "Eset: 100\n", + "Eset: 600\n", "Esetp: 10000\n", "================================================================================================================================================================\n", "Atomic information: \n", @@ -811,7 +873,7 @@ "----------------------------------------------------------------------------------------------------------------------------------------------------------------\n", "[3]Fe(2) -7.339158738013707e-06 4.149278510690423e-06 11.657585837928032\n", "\n", - "[4]Fe(2) -7.326987662162937e-06 4.158274523275774e-06 8.912422537596708\n", + "[4]Fe(all) -7.326987662162937e-06 4.158274523275774e-06 8.912422537596708\n", "\n", "[5]Fe(2) 1.8954667088117545 1.0943913231921656 10.285002698393109\n", "\n", @@ -820,160 +882,160 @@ "----------------------------------------------------------------------------------------------------------------------------------------------------------------\n", "Magnetic entity1 Magnetic entity2 [i j k] d [Ang]\n", "----------------------------------------------------------------------------------------------------------------------------------------------------------------\n", - "[3]Fe(2) [4]Fe(2) [0 0 0] d [Ang] 2.745163300331324\n", - "Isotropic: -61.498296406506675\n", - "DMI: [-9.32930006e-01 -6.96988637e-04 -1.36689594e-06]\n", - "Symmetric-anisotropy: [ 3.64026416e-01 -9.75305726e-05 1.03837928e-05 -9.75305726e-05\n", - " 2.98408661e+00 -2.59876808e-05 1.03837928e-05 -2.59876808e-05\n", - " -3.34811302e+00]\n", - "J: [-6.11342700e+01 -9.75305726e-05 1.03837928e-05 -9.75305726e-05\n", - " -5.85142098e+01 -2.59876808e-05 1.03837928e-05 -2.59876808e-05\n", - " -6.48464094e+01]\n", + "[3]Fe(2) [4]Fe(all) [0 0 0] d [Ang] 2.745163300331324\n", + "Isotropic: -38.08908138560059\n", + "DMI: [-3.50315141e-01 2.63885818e-04 -4.29362132e-06]\n", + "Symmetric-anisotropy: [ 1.17647885e+00 -1.96468230e-05 -7.74651208e-07 -1.96468230e-05\n", + " 1.26142216e+00 3.57154955e-04 -7.74651208e-07 3.57154955e-04\n", + " -2.43790101e+00]\n", + "J: [-3.69126025e+01 -1.96468230e-05 -7.74651208e-07 -1.96468230e-05\n", + " -3.68276592e+01 3.57154955e-04 -7.74651208e-07 3.57154955e-04\n", + " -4.05269824e+01]\n", "Energies for debugging: \n", - "array([[-6.21997924e-02, -9.32904018e-04, 9.32955993e-04,\n", - " -6.14479990e-02],\n", - " [-6.74930265e-02, 6.86604844e-07, -7.07372430e-07,\n", - " -6.66882231e-02],\n", - " [-5.55804206e-02, 9.61636767e-08, 9.88974686e-08,\n", - " -5.55803169e-02]])\n", + "array([[-4.04406378e-02, -3.50672296e-04, 3.49957987e-04,\n", + " -4.01805196e-02],\n", + " [-4.06133270e-02, -2.63111167e-07, 2.64660469e-07,\n", + " -4.03504319e-02],\n", + " [-3.34747989e-02, 1.53532017e-08, 2.39404444e-08,\n", + " -3.34747732e-02]])\n", "J_ii for debugging: (check if this is the same as in calculate_exchange_tensor)\n", - "array([-0.06668822, -0.05558042, -0.06219979])\n", + "array([-0.04035043, -0.0334748 , -0.04044064])\n", "Test J_xx = E(y,z) = E(z,y)\n", - "-0.06668822305594396 -0.055580316925466514\n", + "-0.04035043189424629 -0.03347477318614506\n", "\n", "[3]Fe(2) [5]Fe(2) [0 0 0] d [Ang] 2.5835033632437767\n", - "Isotropic: -60.54618555554936\n", - "DMI: [ 3.78486756e+00 -6.14165405e+00 5.59099134e-04]\n", - "Symmetric-anisotropy: [ 0.20417082 0.07119707 -0.09312132 0.07119707 0.01235531 -0.04251649\n", - " -0.09312132 -0.04251649 -0.21652613]\n", - "J: [-6.03420147e+01 7.11970660e-02 -9.31213222e-02 7.11970660e-02\n", - " -6.05338303e+01 -4.25164858e-02 -9.31213222e-02 -4.25164858e-02\n", - " -6.07627117e+01]\n", + "Isotropic: -65.6147625726105\n", + "DMI: [ 3.55875702e+00 -6.14766359e+00 2.13990280e-05]\n", + "Symmetric-anisotropy: [-0.08599962 0.03698877 -0.10152953 0.03698877 -0.29087488 -0.04979049\n", + " -0.10152953 -0.04979049 0.3768745 ]\n", + "J: [-6.57007622e+01 3.69887710e-02 -1.01529530e-01 3.69887710e-02\n", + " -6.59056375e+01 -4.97904945e-02 -1.01529530e-01 -4.97904945e-02\n", + " -6.52378881e+01]\n", "Energies for debugging: \n", - "array([[-6.08726017e-02, 3.82738404e-03, -3.74235107e-03,\n", - " -6.11758535e-02],\n", - " [-6.06528217e-02, 6.23477538e-03, -6.04853273e-03,\n", - " -6.08746935e-02],\n", - " [-5.98918070e-02, -7.06379668e-05, -7.17561651e-05,\n", - " -5.98093360e-02]])\n", + "array([[-6.53648847e-02, 3.60854752e-03, -3.50896653e-03,\n", + " -6.58426415e-02],\n", + " [-6.51108914e-02, 6.24919312e-03, -6.04613406e-03,\n", + " -6.54759423e-02],\n", + " [-6.59686334e-02, -3.69673720e-05, -3.70101700e-05,\n", + " -6.59255821e-02]])\n", "J_ii for debugging: (check if this is the same as in calculate_exchange_tensor)\n", - "array([-0.06087469, -0.05989181, -0.0608726 ])\n", + "array([-0.06547594, -0.06596863, -0.06536488])\n", "Test J_xx = E(y,z) = E(z,y)\n", - "-0.06087469345892933 -0.05980933600539501\n", + "-0.06547594226467608 -0.06592558212190268\n", "\n", - "[4]Fe(2) [5]Fe(2) [0 0 0] d [Ang] 2.583501767937866\n", - "Isotropic: -60.54212757392337\n", - "DMI: [-3.79967167e+00 6.15419703e+00 5.59764090e-04]\n", - "Symmetric-anisotropy: [ 0.20573682 0.0711945 0.08981327 0.0711945 0.0059668 0.03643624\n", - " 0.08981327 0.03643624 -0.21170362]\n", - "J: [-6.03363908e+01 7.11945020e-02 8.98132684e-02 7.11945020e-02\n", - " -6.05361608e+01 3.64362362e-02 8.98132684e-02 3.64362362e-02\n", - " -6.07538312e+01]\n", + "[4]Fe(all) [5]Fe(2) [0 0 0] d [Ang] 2.583501767937866\n", + "Isotropic: -63.461479457470716\n", + "DMI: [-3.46188832e+00 5.96672549e+00 2.26187324e-05]\n", + "Symmetric-anisotropy: [-0.0829036 0.03178786 0.09341113 0.03178786 -0.2854846 0.04272782\n", + " 0.09341113 0.04272782 0.3683882 ]\n", + "J: [-6.35443831e+01 3.17878581e-02 9.34111270e-02 3.17878581e-02\n", + " -6.37469641e+01 4.27278222e-02 9.34111270e-02 4.27278222e-02\n", + " -6.30930913e+01]\n", "Energies for debugging: \n", - "array([[-6.08690792e-02, -3.83610790e-03, 3.76323543e-03,\n", - " -6.11804573e-02],\n", - " [-6.06385832e-02, -6.24401030e-03, 6.06438376e-03,\n", - " -6.08633835e-02],\n", - " [-5.98918643e-02, -7.06347379e-05, -7.17542661e-05,\n", - " -5.98093980e-02]])\n", + "array([[-6.32236137e-02, -3.50461614e-03, 3.41916050e-03,\n", + " -6.36877197e-02],\n", + " [-6.29625688e-02, -6.06013662e-03, 5.87331436e-03,\n", + " -6.33196114e-02],\n", + " [-6.38062084e-02, -3.17652393e-05, -3.18104768e-05,\n", + " -6.37691547e-02]])\n", "J_ii for debugging: (check if this is the same as in calculate_exchange_tensor)\n", - "array([-0.06086338, -0.05989186, -0.06086908])\n", + "array([-0.06331961, -0.06380621, -0.06322361])\n", "Test J_xx = E(y,z) = E(z,y)\n", - "-0.0608633834990491 -0.059809398001364436\n", + "-0.06331961140706378 -0.06376915470527415\n", "\n", "[3]Fe(2) [5]Fe(2) [-1 -1 0] d [Ang] 2.5834973202859075\n", - "Isotropic: -60.53930274234898\n", - "DMI: [-7.20262359e+00 3.30922312e-04 -5.12682125e-04]\n", - "Symmetric-anisotropy: [-4.62470099e-02 -1.05109909e-04 1.11455444e-04 -1.05109909e-04\n", - " 2.54462404e-01 1.15662485e-01 1.11455444e-04 1.15662485e-01\n", - " -2.08215394e-01]\n", - "J: [-6.05855498e+01 -1.05109909e-04 1.11455444e-04 -1.05109909e-04\n", - " -6.02848403e+01 1.15662485e-01 1.11455444e-04 1.15662485e-01\n", - " -6.07475181e+01]\n", + "Isotropic: -65.62000802135631\n", + "DMI: [-7.07503443e+00 3.04878078e-04 3.59246447e-06]\n", + "Symmetric-anisotropy: [-3.95641341e-01 -1.37462093e-04 1.36999229e-04 -1.37462093e-04\n", + " 1.87904813e-02 1.22453077e-01 1.36999229e-04 1.22453077e-01\n", + " 3.76850860e-01]\n", + "J: [-6.60156494e+01 -1.37462093e-04 1.36999229e-04 -1.37462093e-04\n", + " -6.56012175e+01 1.22453077e-01 1.36999229e-04 1.22453077e-01\n", + " -6.52431572e+01]\n", "Energies for debugging: \n", - "array([[-6.06216770e-02, -7.31828608e-03, 7.08696111e-03,\n", - " -6.08002127e-02],\n", - " [-6.08733593e-02, -4.42377757e-07, 2.19466868e-07,\n", - " -6.12370668e-02],\n", - " [-5.97694679e-02, -4.07572216e-07, 6.17792035e-07,\n", - " -5.99340327e-02]])\n", + "array([[-6.49844951e-02, -7.19748751e-03, 6.95258136e-03,\n", + " -6.52968607e-02],\n", + " [-6.55018192e-02, -4.41877308e-07, 1.67878849e-07,\n", + " -6.60401128e-02],\n", + " [-6.59055744e-02, 1.41054558e-07, 1.33869629e-07,\n", + " -6.59911860e-02]])\n", "J_ii for debugging: (check if this is the same as in calculate_exchange_tensor)\n", - "array([-0.06123707, -0.05976947, -0.06062168])\n", + "array([-0.06604011, -0.06590557, -0.0649845 ])\n", "Test J_xx = E(y,z) = E(z,y)\n", - "-0.061237066792013795 -0.05993403271250145\n", + "-0.06604011276766036 -0.06599118595746928\n", "\n", - "[4]Fe(2) [5]Fe(2) [-1 -1 0] d [Ang] 2.583495745338251\n", - "Isotropic: -60.54260994469562\n", - "DMI: [ 7.20261281e+00 -7.79978899e-04 -5.10345027e-04]\n", - "Symmetric-anisotropy: [-4.49940133e-02 -1.04644259e-04 1.76885445e-05 -1.04644259e-04\n", - " 2.57575083e-01 -1.15643556e-01 1.76885445e-05 -1.15643556e-01\n", - " -2.12581070e-01]\n", - "J: [-6.05876040e+01 -1.04644259e-04 1.76885445e-05 -1.04644259e-04\n", - " -6.02850349e+01 -1.15643556e-01 1.76885445e-05 -1.15643556e-01\n", - " -6.07551910e+01]\n", + "[4]Fe(all) [5]Fe(2) [-1 -1 0] d [Ang] 2.583495745338251\n", + "Isotropic: -63.4637006802454\n", + "DMI: [ 6.84888899e+00 -7.88878725e-04 1.52778682e-05]\n", + "Symmetric-anisotropy: [-3.84273968e-01 -1.41648052e-04 1.12499451e-04 -1.41648052e-04\n", + " 1.63124769e-02 -1.19287820e-01 1.12499451e-04 -1.19287820e-01\n", + " 3.67961491e-01]\n", + "J: [-6.38479746e+01 -1.41648052e-04 1.12499451e-04 -1.41648052e-04\n", + " -6.34473882e+01 -1.19287820e-01 1.12499451e-04 -1.19287820e-01\n", + " -6.30957392e+01]\n", "Energies for debugging: \n", - "array([[-6.06219750e-02, 7.31825637e-03, -7.08696926e-03,\n", - " -6.08004936e-02],\n", - " [-6.08884070e-02, 7.62290354e-07, -7.97667443e-07,\n", - " -6.12410736e-02],\n", - " [-5.97695761e-02, -4.05700767e-07, 6.14989286e-07,\n", - " -5.99341343e-02]])\n", + "array([[-6.28360612e-02, 6.96817681e-03, -6.72960117e-03,\n", + " -6.31426268e-02],\n", + " [-6.33554172e-02, 6.76379274e-07, -9.01378176e-07,\n", + " -6.38701956e-02],\n", + " [-6.37521496e-02, 1.56925920e-07, 1.26370184e-07,\n", + " -6.38257537e-02]])\n", "J_ii for debugging: (check if this is the same as in calculate_exchange_tensor)\n", - "array([-0.06124107, -0.05976958, -0.06062198])\n", + "array([-0.0638702 , -0.06375215, -0.06283606])\n", "Test J_xx = E(y,z) = E(z,y)\n", - "-0.06124107359965607 -0.059934134316324196\n", + "-0.06387019555954467 -0.06382575373745485\n", "\n", "[3]Fe(2) [5]Fe(2) [-1 0 0] d [Ang] 2.583541444641373\n", - "Isotropic: -60.53142529259683\n", - "DMI: [ 3.79939696e+00 6.14174265e+00 -4.60077462e-05]\n", - "Symmetric-anisotropy: [ 0.2042796 -0.07107711 0.09303406 -0.07107711 0.01020684 -0.03654049\n", - " 0.09303406 -0.03654049 -0.21448644]\n", - "J: [-6.03271457e+01 -7.10771078e-02 9.30340570e-02 -7.10771078e-02\n", - " -6.05212185e+01 -3.65404867e-02 9.30340570e-02 -3.65404867e-02\n", - " -6.07459117e+01]\n", + "Isotropic: -65.60128795737425\n", + "DMI: [ 3.57594200e+00 6.14751321e+00 -2.99860089e-05]\n", + "Symmetric-anisotropy: [-0.08550091 -0.03685709 0.10144213 -0.03685709 -0.29158846 -0.04351401\n", + " 0.10144213 -0.04351401 0.37708937]\n", + "J: [-6.56867889e+01 -3.68570877e-02 1.01442127e-01 -3.68570877e-02\n", + " -6.58928764e+01 -4.35140091e-02 1.01442127e-01 -4.35140091e-02\n", + " -6.52241986e+01]\n", "Energies for debugging: \n", - "array([[-6.08543628e-02, 3.83593745e-03, -3.76285647e-03,\n", - " -6.11652643e-02],\n", - " [-6.06374606e-02, -6.23477670e-03, 6.04870859e-03,\n", - " -6.08592084e-02],\n", - " [-5.98771726e-02, 7.10311000e-05, 7.11231155e-05,\n", - " -5.97950830e-02]])\n", + "array([[-6.53521011e-02, 3.61945601e-03, -3.53242799e-03,\n", + " -6.58308241e-02],\n", + " [-6.50962960e-02, -6.24895534e-03, 6.04607109e-03,\n", + " -6.54612308e-02],\n", + " [-6.59549288e-02, 3.68271017e-05, 3.68870737e-05,\n", + " -6.59123469e-02]])\n", "J_ii for debugging: (check if this is the same as in calculate_exchange_tensor)\n", - "array([-0.06085921, -0.05987717, -0.06085436])\n", + "array([-0.06546123, -0.06595493, -0.0653521 ])\n", "Test J_xx = E(y,z) = E(z,y)\n", - "-0.06085920839939711 -0.059795082988255574\n", + "-0.06546123082429328 -0.06591234690586369\n", "\n", - "[4]Fe(2) [5]Fe(2) [-1 0 0] d [Ang] 2.5835398672184064\n", - "Isotropic: -60.52706082282313\n", - "DMI: [-3.78470017e+00 -6.15374066e+00 -4.69844827e-05]\n", - "Symmetric-anisotropy: [ 0.2054248 -0.07107452 -0.08989469 -0.07107452 0.00801517 0.04261804\n", - " -0.08989469 0.04261804 -0.21343998]\n", - "J: [-6.03216360e+01 -7.10745234e-02 -8.98946890e-02 -7.10745234e-02\n", - " -6.05190457e+01 4.26180387e-02 -8.98946890e-02 4.26180387e-02\n", - " -6.07405008e+01]\n", + "[4]Fe(all) [5]Fe(2) [-1 0 0] d [Ang] 2.5835398672184064\n", + "Isotropic: -63.445681369296956\n", + "DMI: [-3.44476779e+00 -5.96603346e+00 -2.37584314e-05]\n", + "Symmetric-anisotropy: [-0.08466531 -0.031648 -0.0935334 -0.031648 -0.28385999 0.04835705\n", + " -0.0935334 0.04835705 0.3685253 ]\n", + "J: [-6.35303467e+01 -3.16479979e-02 -9.35333990e-02 -3.16479979e-02\n", + " -6.37295414e+01 4.83570464e-02 -9.35333990e-02 4.83570464e-02\n", + " -6.30771561e+01]\n", "Energies for debugging: \n", - "array([[-6.08579041e-02, -3.82731821e-03, 3.74208213e-03,\n", - " -6.11607909e-02],\n", - " [-6.06230975e-02, 6.24363535e-03, -6.06384598e-03,\n", - " -6.08480575e-02],\n", - " [-5.98773004e-02, 7.10275389e-05, 7.11215079e-05,\n", - " -5.97952145e-02]])\n", + "array([[-6.32065968e-02, -3.49312484e-03, 3.39641074e-03,\n", + " -6.36666376e-02],\n", + " [-6.29477154e-02, 6.05956686e-03, -5.87250006e-03,\n", + " -6.33048155e-02],\n", + " [-6.37924451e-02, 3.16242395e-05, 3.16717563e-05,\n", + " -6.37558779e-02]])\n", "J_ii for debugging: (check if this is the same as in calculate_exchange_tensor)\n", - "array([-0.06084806, -0.0598773 , -0.0608579 ])\n", + "array([-0.06330482, -0.06379245, -0.0632066 ])\n", "Test J_xx = E(y,z) = E(z,y)\n", - "-0.060848057523824294 -0.05979521451219277\n", + "-0.06330481549381357 -0.06375587786178244\n", "\n", "================================================================================================================================================================\n", "Runtime information: \n", - "Total runtime: 264.50463125 s\n", + "Total runtime: 395.5379132080002 s\n", "----------------------------------------------------------------------------------------------------------------------------------------------------------------\n", - "Initial setup: 0.17141095800000006 s\n", - "Hamiltonian conversion and XC field extraction: 1.047 s\n", - "Pair and site datastructure creatrions: 0.036 s\n", - "k set cration and distribution: 0.029 s\n", - "Rotating XC potential: 0.329 s\n", - "Greens function inversion: 262.683 s\n", - "Calculate energies and magnetic components: 0.209 s\n" + "Initial setup: 0.14075858300020627 s\n", + "Hamiltonian conversion and XC field extraction: 0.811 s\n", + "Pair and site datastructure creatrions: 0.094 s\n", + "k set cration and distribution: 0.011 s\n", + "Rotating XC potential: 0.255 s\n", + "Greens function inversion: 393.524 s\n", + "Calculate energies and magnetic components: 0.702 s\n" ] } ], @@ -1065,7 +1127,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 111, "metadata": {}, "outputs": [ { @@ -1073,7 +1135,7 @@ "evalue": "invalid syntax (3105939143.py, line 1)", "output_type": "error", "traceback": [ - "\u001b[0;36m Cell \u001b[0;32mIn[11], line 1\u001b[0;36m\u001b[0m\n\u001b[0;31m ========================================\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" + "\u001b[0;36m Cell \u001b[0;32mIn[111], line 1\u001b[0;36m\u001b[0m\n\u001b[0;31m ========================================\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" ] } ], diff --git a/test.py b/test.py new file mode 100644 index 0000000..9569cdf --- /dev/null +++ b/test.py @@ -0,0 +1,550 @@ +import pickle +import warnings +from sys import getsizeof +from timeit import default_timer as timer + +import numpy as np +import sisl +import sisl.viz +from mpi4py import MPI +from numpy.linalg import inv +from tqdm import tqdm + +from src.grogu_magn.useful import * + +""" +# Some input parsing +parser = argparse.ArgumentParser() +parser.add_argument('--kset' , dest = 'kset' , default = 2 , type=int , help = 'k-space resolution of Jij calculation') +parser.add_argument('--kdirs' , dest = 'kdirs' , default = 'xyz' , help = 'Definition of k-space dimensionality') +parser.add_argument('--eset' , dest = 'eset' , default = 42 , type=int , help = 'Number of energy points on the contour') +parser.add_argument('--eset-p' , dest = 'esetp' , default = 10 , type=int , help = 'Parameter tuning the distribution on the contour') +parser.add_argument('--input' , dest = 'infile' , required = True , help = 'Input file name') +parser.add_argument('--output' , dest = 'outfile', required = True , help = 'Output file name') +parser.add_argument('--Ebot' , dest = 'Ebot' , default = -20.0 , type=float, help = 'Bottom energy of the contour') +parser.add_argument('--npairs' , dest = 'npairs' , default = 1 , type=int , help = 'Number of unitcell pairs in each direction for Jij calculation') +parser.add_argument('--adirs' , dest = 'adirs' , default = False , help = 'Definition of pair directions') +parser.add_argument('--use-tqdm', dest = 'usetqdm', default = 'not' , help = 'Use tqdm for progressbars or not') +parser.add_argument('--cutoff' , dest = 'cutoff' , default = 100.0 , type=float, help = 'Real space cutoff for pair generation in Angs') +parser.add_argument('--pairfile', dest = 'pairfile', default = False , help = 'File to read pair information') +args = parser.parse_args() +""" +# runtime information +times = dict() +times["start_time"] = timer() + +################################################################################ +#################################### INPUT ##################################### +################################################################################ +path = ( + "/Users/danielpozsar/Downloads/nojij/Fe3GeTe2/monolayer/soc/lat3_791/Fe3GeTe2.fdf" +) +outfile = "./Fe3GeTe2_benchmark_on_15k_300eset_orb_test3" + +# this information needs to be given at the input!! +scf_xcf_orientation = np.array([0, 0, 1]) # z +# list of reference directions for around which we calculate the derivatives +# o is the quantization axis, v and w are two axes perpendicular to it +# at this moment the user has to supply o,v,w on the input. +# we can have some default for this +ref_xcf_orientations = [ + dict(o=np.array([1, 0, 0]), vw=[np.array([0, 1, 0]), np.array([0, 0, 1])]), + dict(o=np.array([0, 1, 0]), vw=[np.array([1, 0, 0]), np.array([0, 0, 1])]), + dict(o=np.array([0, 0, 1]), vw=[np.array([1, 0, 0]), np.array([0, 1, 0])]), +] +magnetic_entities = [ + dict(atom=3, l=2), + dict(atom=4, l=2), + dict(atom=5, l=1), +] +pairs = [ + dict(ai=0, aj=1, Ruc=np.array([0, 0, 0])), + dict(ai=0, aj=2, Ruc=np.array([0, 0, 0])), + dict(ai=1, aj=2, Ruc=np.array([0, 0, 0])), + dict(ai=0, aj=2, Ruc=np.array([-1, -1, 0])), + dict(ai=1, aj=2, Ruc=np.array([-1, -1, 0])), + dict(ai=0, aj=2, Ruc=np.array([-1, 0, 0])), + dict(ai=1, aj=2, Ruc=np.array([-1, 0, 0])), + dict(ai=1, aj=2, Ruc=np.array([-2, 0, 0])), + dict(ai=1, aj=2, Ruc=np.array([-3, 0, 0])), +] +# Brilloun zone sampling and Green function contour integral +kset = 15 +kdirs = "xy" +ebot = -13 +eset = 300 +esetp = 1000 +################################################################################ +#################################### INPUT ##################################### +################################################################################ + +# MPI parameters +comm = MPI.COMM_WORLD +size = comm.Get_size() +rank = comm.Get_rank() +root_node = 0 + +# rename outfile +if not outfile.endswith(".pickle"): + outfile += ".pickle" + +simulation_parameters = dict( + path=path, + outpath=outfile, + scf_xcf_orientation=scf_xcf_orientation, + ref_xcf_orientations=ref_xcf_orientations, + kset=kset, + kdirs=kdirs, + ebot=ebot, + eset=eset, + esetp=esetp, + parallel_size=size, +) + +# digestion of the input +# read sile +fdf = sisl.get_sile(path) +# read in hamiltonian +dh = fdf.read_hamiltonian() +simulation_parameters["cell"] = fdf.read_geometry().cell + +# unit cell index +uc_in_sc_idx = dh.lattice.sc_index([0, 0, 0]) + +if rank == root_node: + print_parameters(simulation_parameters) + times["setup_time"] = timer() + print(f"Setup done. Elapsed time: {times['setup_time']} s") + print( + "================================================================================================================================================================" + ) + +NO = dh.no # shorthand for number of orbitals in the unit cell + +# preprocessing Hamiltonian and overlap matrix elements +h11 = dh.tocsr(dh.M11r) +h11 += dh.tocsr(dh.M11i) * 1.0j +h11 = h11.toarray().reshape(NO, dh.n_s, NO).transpose(0, 2, 1).astype("complex128") + +h22 = dh.tocsr(dh.M22r) +h22 += dh.tocsr(dh.M22i) * 1.0j +h22 = h22.toarray().reshape(NO, dh.n_s, NO).transpose(0, 2, 1).astype("complex128") + +h12 = dh.tocsr(dh.M12r) +h12 += dh.tocsr(dh.M12i) * 1.0j +h12 = h12.toarray().reshape(NO, dh.n_s, NO).transpose(0, 2, 1).astype("complex128") + +h21 = dh.tocsr(dh.M21r) +h21 += dh.tocsr(dh.M21i) * 1.0j +h21 = h21.toarray().reshape(NO, dh.n_s, NO).transpose(0, 2, 1).astype("complex128") + +sov = ( + dh.tocsr(dh.S_idx) + .toarray() + .reshape(NO, dh.n_s, NO) + .transpose(0, 2, 1) + .astype("complex128") +) + + +# Reorganization of Hamiltonian and overlap matrix elements to SPIN BOX representation +U = np.vstack( + [np.kron(np.eye(NO, dtype=int), [1, 0]), np.kron(np.eye(NO, dtype=int), [0, 1])] +) +# This is the permutation that transforms ud1ud2 to u12d12 +# That is this transforms FROM SPIN BOX to ORBITAL BOX => U +# the inverse transformation is U.T u12d12 to ud1ud2 +# That is FROM ORBITAL BOX to SPIN BOX => U.T + +# From now on everything is in SPIN BOX!! +hh, ss = np.array( + [ + U.T @ np.block([[h11[:, :, i], h12[:, :, i]], [h21[:, :, i], h22[:, :, i]]]) @ U + for i in range(dh.lattice.nsc.prod()) + ] +), np.array( + [ + U.T + @ np.block([[sov[:, :, i], sov[:, :, i] * 0], [sov[:, :, i] * 0, sov[:, :, i]]]) + @ U + for i in range(dh.lattice.nsc.prod()) + ] +) + + +# symmetrizing Hamiltonian and overlap matrix to make them hermitian +for i in range(dh.lattice.sc_off.shape[0]): + j = dh.lattice.sc_index(-dh.lattice.sc_off[i]) + h1, h1d = hh[i], hh[j] + hh[i], hh[j] = (h1 + h1d.T.conj()) / 2, (h1d + h1.T.conj()) / 2 + s1, s1d = ss[i], ss[j] + ss[i], ss[j] = (s1 + s1d.T.conj()) / 2, (s1d + s1.T.conj()) / 2 + +# identifying TRS and TRB parts of the Hamiltonian +TAUY = np.kron(np.eye(NO), tau_y) +hTR = np.array([TAUY @ hh[i].conj() @ TAUY for i in range(dh.lattice.nsc.prod())]) +hTRS = (hh + hTR) / 2 +hTRB = (hh - hTR) / 2 + +# extracting the exchange field +traced = [spin_tracer(hTRB[i]) for i in range(dh.lattice.nsc.prod())] # equation 77 +XCF = np.array( + [ + np.array([f["x"] for f in traced]), + np.array([f["y"] for f in traced]), + np.array([f["z"] for f in traced]), + ] +) # equation 77 + +# Check if exchange field has scalar part +max_xcfs = abs(np.array(np.array([f["c"] for f in traced]))).max() +if max_xcfs > 1e-12: + warnings.warn( + f"Exchange field has non negligible scalar part. Largest value is {max_xcfs}" + ) + +if rank == root_node: + times["H_and_XCF_time"] = timer() + print( + f"Hamiltonian and exchange field rotated. Elapsed time: {times['H_and_XCF_time']} s" + ) + print( + "================================================================================================================================================================" + ) + + # for every site we have to store 3 Greens function (and the associated _tmp-s) in the 3 reference directions +for mag_ent in magnetic_entities: + parsed = parse_magnetic_entity(dh, **mag_ent) # parse orbital indexes + mag_ent["orbital_indeces"] = parsed + mag_ent["spin_box_indeces"] = blow_up_orbindx(parsed) # calculate spin box indexes + # if orbital is not set use all + if "l" not in mag_ent.keys(): + mag_ent["l"] = "all" + if isinstance(mag_ent["atom"], int): + mag_ent["tags"] = [ + f"[{mag_ent['atom']}]{dh.atoms[mag_ent['atom']].tag}({mag_ent['l']})" + ] + mag_ent["xyz"] = [dh.xyz[mag_ent["atom"]]] + if isinstance(mag_ent["atom"], list): + mag_ent["tags"] = [] + mag_ent["xyz"] = [] + # iterate over atoms + for atom_idx in mag_ent["atom"]: + mag_ent["tags"].append( + f"[{atom_idx}]{dh.atoms[atom_idx].tag}({mag_ent['l']})" + ) + mag_ent["xyz"].append(dh.xyz[atom_idx]) + + # calculate size for Greens function generation + spin_box_shape = len(mag_ent["spin_box_indeces"]) + + mag_ent["energies"] = [] # we will store the second order energy derivations here + + # These will be the perturbed potentials from eq. 100 + mag_ent["Vu1"] = [] # so they are independent in memory + mag_ent["Vu2"] = [] + + mag_ent["Gii"] = [] # Greens function + mag_ent["Gii_tmp"] = [] # Greens function for parallelization + for i in ref_xcf_orientations: + # Rotations for every quantization axis + mag_ent["Vu1"].append([]) + mag_ent["Vu2"].append([]) + # Greens functions for every quantization axis + mag_ent["Gii"].append( + np.zeros((eset, spin_box_shape, spin_box_shape), dtype="complex128") + ) + mag_ent["Gii_tmp"].append( + np.zeros((eset, spin_box_shape, spin_box_shape), dtype="complex128") + ) + +# for every site we have to store 2x3 Greens function (and the associated _tmp-s) +# in the 3 reference directions, because G_ij and G_ji are both needed +for pair in pairs: + # calculate distance + xyz_ai = magnetic_entities[pair["ai"]]["xyz"] + xyz_aj = magnetic_entities[pair["aj"]]["xyz"] + xyz_aj = xyz_aj + pair["Ruc"] @ simulation_parameters["cell"] + pair["dist"] = np.linalg.norm(xyz_ai - xyz_aj) + + # calculate size for Greens function generation + spin_box_shape_i = len(magnetic_entities[pair["ai"]]["spin_box_indeces"]) + spin_box_shape_j = len(magnetic_entities[pair["aj"]]["spin_box_indeces"]) + pair["tags"] = [] + for mag_ent in [magnetic_entities[pair["ai"]], magnetic_entities[pair["aj"]]]: + tag = "" + # get atoms of magnetic entity + atoms_idx = mag_ent["atom"] + orbitals = mag_ent["l"] + + # if magnetic entity contains one atoms + if isinstance(atoms_idx, int): + tag += f"[{atoms_idx}]{dh.atoms[atoms_idx].tag}({orbitals})" + + # if magnetic entity contains more than one atoms + if isinstance(atoms_idx, list): + # iterate over atoms + atom_group = "{" + for atom_idx in atoms_idx: + atom_group += f"[{atom_idx}]{dh.atoms[atom_idx].tag}({orbitals})--" + # end {} of the atoms in the magnetic entity + tag += atom_group[:-2] + "}" + pair["tags"].append(tag) + pair["energies"] = [] # we will store the second order energy derivations here + + pair["Gij"] = [] # Greens function + pair["Gji"] = [] + pair["Gij_tmp"] = [] # Greens function for parallelization + pair["Gji_tmp"] = [] + for i in ref_xcf_orientations: + # Greens functions for every quantization axis + pair["Gij"].append( + np.zeros((eset, spin_box_shape_i, spin_box_shape_j), dtype="complex128") + ) + pair["Gij_tmp"].append( + np.zeros((eset, spin_box_shape_i, spin_box_shape_j), dtype="complex128") + ) + pair["Gji"].append( + np.zeros((eset, spin_box_shape_j, spin_box_shape_i), dtype="complex128") + ) + pair["Gji_tmp"].append( + np.zeros((eset, spin_box_shape_j, spin_box_shape_i), dtype="complex128") + ) + +if rank == root_node: + times["site_and_pair_dictionaries_time"] = timer() + print( + f"Site and pair dictionaries created. Elapsed time: {times['site_and_pair_dictionaries_time']} s" + ) + print( + "================================================================================================================================================================" + ) + +kset = make_kset(dirs=kdirs, NUMK=kset) # generate k space sampling +wkset = np.ones(len(kset)) / len(kset) # generate weights for k points +kpcs = np.array_split(kset, size) # split the k points based on MPI size +kpcs[root_node] = tqdm(kpcs[root_node], desc="k loop") + +if rank == root_node: + times["k_set_time"] = timer() + print(f"k set created. Elapsed time: {times['k_set_time']} s") + print( + "================================================================================================================================================================" + ) + + # this will contain the three hamiltonians in the reference directions needed to calculate the energy variations upon rotation +hamiltonians = [] + +# iterate over the reference directions (quantization axes) +for i, orient in enumerate(ref_xcf_orientations): + # obtain rotated exchange field + R = RotMa2b(scf_xcf_orientation, orient["o"]) + rot_XCF = np.einsum("ij,jklm->iklm", R, XCF) + rot_H_XCF = sum( + [np.kron(rot_XCF[i], tau) for i, tau in enumerate([tau_x, tau_y, tau_z])] + ) + rot_H_XCF_uc = rot_H_XCF[uc_in_sc_idx] + + # obtain total Hamiltonian with the rotated exchange field + rot_H = ( + hTRS + rot_H_XCF + ) # equation 76 ####################################################################################### + + hamiltonians.append( + dict(orient=orient["o"], H=rot_H) + ) # store orientation and rotated Hamiltonian + + # these are the rotations (for now) perpendicular to the quantization axis + for u in orient["vw"]: + Tu = np.kron(np.eye(NO, dtype=int), tau_u(u)) # section 2.H + + Vu1 = 1j / 2 * commutator(rot_H_XCF_uc, Tu) # equation 100 + Vu2 = 1 / 8 * commutator(commutator(Tu, rot_H_XCF_uc), Tu) # equation 100 + + for mag_ent in magnetic_entities: + idx = mag_ent["spin_box_indeces"] + # fill up the perturbed potentials (for now) based on the on-site projections + mag_ent["Vu1"][i].append(Vu1[:, idx][idx, :]) + mag_ent["Vu2"][i].append(Vu2[:, idx][idx, :]) + +if rank == root_node: + times["reference_rotations_time"] = timer() + print( + f"Rotations done perpendicular to quantization axis. Elapsed time: {times['reference_rotations_time']} s" + ) + print( + "================================================================================================================================================================" + ) + + +if rank == root_node: + print("Starting matrix inversions") + print(f"Total number of k points: {kset.shape[0]}") + print(f"Number of energy samples per k point: {eset}") + print(f"Total number of directions: {len(hamiltonians)}") + print( + f"Total number of matrix inversions: {kset.shape[0] * len(hamiltonians) * eset}" + ) + print(f"The shape of the Hamiltonian and the Greens function is {NO}x{NO}={NO*NO}") + # https://stackoverflow.com/questions/70746660/how-to-predict-memory-requirement-for-np-linalg-inv + # memory is O(64 n**2) for complex matrices + memory_size = getsizeof(hamiltonians[0]["H"].base) / 1024 + print( + f"Memory taken by a single Hamiltonian is: {getsizeof(hamiltonians[0]['H'].base) / 1024} KB" + ) + print(f"Expected memory usage per matrix inversion: {memory_size * 32} KB") + print( + f"Expected memory usage per k point for parallel inversion: {memory_size * len(hamiltonians) * eset * 32} KB" + ) + print( + f"Expected memory usage on root node: {len(np.array_split(kset, size)[0]) * memory_size * len(hamiltonians) * eset * 32 / 1024} MB" + ) + print( + "================================================================================================================================================================" + ) + +comm.Barrier() +# ---------------------------------------------------------------------- + +# make energy contour +# we are working in eV now ! +# and sisl shifts E_F to 0 ! +cont = make_contour(emin=ebot, enum=eset, p=esetp) +eran = cont.ze + +# ---------------------------------------------------------------------- +# sampling the integrand on the contour and the BZ +for k in kpcs[rank]: + wk = wkset[rank] # weight of k point in BZ integral + # iterate over reference directions + for i, hamiltonian_orientation in enumerate(hamiltonians): + # calculate Greens function + H = hamiltonian_orientation["H"] + HK, SK = hsk(H, ss, dh.sc_off, k) + # Gk = inv(SK * eran.reshape(eset, 1, 1) - HK) + + # solve Greens function sequentially for the energies, because of memory bound + Gk = np.zeros(shape=(eset, HK.shape[0], HK.shape[1]), dtype="complex128") + for j in range(eset): + Gk[j] = inv(SK * eran[j] - HK) + + # store the Greens function slice of the magnetic entities (for now) based on the on-site projections + for mag_ent in magnetic_entities: + mag_ent["Gii_tmp"][i] += ( + Gk[:, mag_ent["spin_box_indeces"], :][:, :, mag_ent["spin_box_indeces"]] + * wk + ) + + for pair in pairs: + # add phase shift based on the cell difference + phase = np.exp(1j * 2 * np.pi * k @ pair["Ruc"].T) + + # get the pair orbital sizes from the magnetic entities + ai = magnetic_entities[pair["ai"]]["spin_box_indeces"] + aj = magnetic_entities[pair["aj"]]["spin_box_indeces"] + + # store the Greens function slice of the magnetic entities (for now) based on the on-site projections + pair["Gij_tmp"][i] += Gk[:, ai][..., aj] * phase * wk + pair["Gji_tmp"][i] += Gk[:, aj][..., ai] / phase * wk + +# summ reduce partial results of mpi nodes +for i in range(len(hamiltonians)): + for mag_ent in magnetic_entities: + comm.Reduce(mag_ent["Gii_tmp"][i], mag_ent["Gii"][i], root=root_node) + + for pair in pairs: + comm.Reduce(pair["Gij_tmp"][i], pair["Gij"][i], root=root_node) + comm.Reduce(pair["Gji_tmp"][i], pair["Gji"][i], root=root_node) + +if rank == root_node: + times["green_function_inversion_time"] = timer() + print( + f"Calculated Greens functions. Elapsed time: {times['green_function_inversion_time']} s" + ) + print( + "================================================================================================================================================================" + ) + +if rank == root_node: + # iterate over the magnetic entities + for tracker, mag_ent in enumerate(magnetic_entities): + # iterate over the quantization axes + for i, Gii in enumerate(mag_ent["Gii"]): + storage = [] + # iterate over the first and second order local perturbations + for Vu1, Vu2 in zip(mag_ent["Vu1"][i], mag_ent["Vu2"][i]): + # The Szunyogh-Lichtenstein formula + traced = np.trace((Vu2 @ Gii + 0.5 * Gii @ Vu1 @ Gii), axis1=1, axis2=2) + # evaluation of the contour integral + storage.append(np.trapz(-1 / np.pi * np.imag(traced * cont.we))) + + # fill up the magnetic entities dictionary with the energies + magnetic_entities[tracker]["energies"].append(storage) + # convert to np array + magnetic_entities[tracker]["energies"] = np.array( + magnetic_entities[tracker]["energies"] + ) + print("Magnetic entities integrated.") + + # iterate over the pairs + for tracker, pair in enumerate(pairs): + # iterate over the quantization axes + for i, (Gij, Gji) in enumerate(zip(pair["Gij"], pair["Gji"])): + site_i = magnetic_entities[pair["ai"]] + site_j = magnetic_entities[pair["aj"]] + + storage = [] + # iterate over the first order local perturbations in all possible orientations for the two sites + for Vui in site_i["Vu1"][i]: + for Vuj in site_j["Vu1"][i]: + # The Szunyogh-Lichtenstein formula + traced = np.trace((Vui @ Gij @ Vuj @ Gji), axis1=1, axis2=2) + # evaluation of the contour integral + storage.append(np.trapz(-1 / np.pi * np.imag(traced * cont.we))) + # fill up the pairs dictionary with the energies + pairs[tracker]["energies"].append(storage) + # convert to np array + pairs[tracker]["energies"] = np.array(pairs[tracker]["energies"]) + + print("Pairs integrated.") + + # calculate magnetic parameters + for pair in pairs: + J_iso, J_S, D, J = calculate_exchange_tensor(pair) + pair["J_iso"] = J_iso * sisl.unit_convert("eV", "meV") + pair["J_S"] = J_S * sisl.unit_convert("eV", "meV") + pair["D"] = D * sisl.unit_convert("eV", "meV") + pair["J"] = J * sisl.unit_convert("eV", "meV") + + print("Magnetic parameters calculated.") + + times["end_time"] = timer() + print( + "##################################################################### GROGU OUTPUT #############################################################################" + ) + + print_parameters(simulation_parameters) + print_atoms_and_pairs(magnetic_entities, pairs) + print_runtime_information(times) + + # remove clutter from magnetic entities and pair information + for pair in pairs: + del pair["Gij"] + del pair["Gij_tmp"] + del pair["Gji"] + del pair["Gji_tmp"] + for mag_ent in magnetic_entities: + del mag_ent["Gii"] + del mag_ent["Gii_tmp"] + del mag_ent["Vu1"] + del mag_ent["Vu2"] + # create output dictionary with all the relevant data + results = dict( + parameters=simulation_parameters, + magnetic_entities=magnetic_entities, + pairs=pairs, + runtime=times, + ) + # save dictionary + with open(outfile, "wb") as output_file: + pickle.dump(results, output_file)