{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Field tools\n", "\n", "Class ``Field`` only contains general functionality useful for any type of field. ``discretisedfield.tools`` contains a number of more specialised convenicence functions required for certain usecases. Currently, most functions are focused on applications for micromagnetics.\n", "\n", "All functions need a ``Field`` object as first parameter." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [] }, "outputs": [], "source": [ "import discretisedfield as df\n", "import discretisedfield.tools as dft" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "p1 = (0, 0, 0)\n", "p2 = (10, 10, 10)\n", "cell = (1, 1, 1)\n", "mesh = df.Mesh(p1=p1, p2=p2, cell=cell)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Topological charge/topological charge density\n", "\n", "Topological charge and topological charge density can be computed for three-dimensional vector fields (``nvdim=3``) only. It is defined for two-dimensional samples only. Therefore, the field must be sliced.\n", "\n", "Two different methods are available and can be selected using ``method``:\n", "\n", "1. Continuous method:\n", " $$q = \\frac{1}{4\\pi} \\mathbf{n} \\cdot \\left(\\frac{\\partial\n", " \\mathbf{n}}{\\partial x} \\times \\frac{\\partial\n", " \\mathbf{n}}{\\partial y} \\right),$$\n", " \n", " where $\\mathbf{n}$ is the orientation field.\n", "\n", "2. Berg-Luescher method. For Berg-Luescher method the two-dimensional plane is triangulated and contributions to topological charge (density) are computed for each triangle.\n", " \n", " Details can be found in:\n", " - B. Berg and M. Luescher. Definition and statistical distributions of a topological number in the lattice O(3) sigma-model. Nuclear Physics B 190 (2), 412-424 (1981).\n", " - J.-V. Kim and J. Mulkers. On quantifying the topological charge in micromagnetics using a lattice-based approach. IOP SciNotes 1, 025211 (2020).\n", "\n", "Here, we show the calculation for a uniform magnetisation which has a topological charge (density) of zero everywhere." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "Field\n", "" ], "text/plain": [ "Field(Mesh(Region(pmin=[0, 0, 0], pmax=[10, 10, 10], dims=['x', 'y', 'z'], units=['m', 'm', 'm']), n=[10, 10, 10]), nvdim=3, vdims: (x, y, z))" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f = df.Field(mesh, nvdim=3, value=(1, 1, -1))\n", "f" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dft.topological_charge(f.sel(\"z\"))" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dft.topological_charge(f.sel(\"z\"), method=\"berg-luescher\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Topological charge density returns a ``Field`` object which we can plot." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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d/9bcnKyPDw81KxZszKPq1q1qoKDg4s9TpJatWolSWrRooUOHz4su91e4nGu5FQj+N577+nChQsaOHCgxowZo8TExEJF/pbdbldCQoJGjx6tQYMGKSMjQ++9955LigYAAHCVbt26ae/evTp79mz+tszMTMXFxalLly7y8fEp17ju3bvr4MGDSkpKyj/Obrdr69atat68uRo1apR/XHp6unbu3Fngc7Zs2aJatWrpnnvucdk557E5HA6nVubT09M1e/Zs/eMf/5DNZpOPj4/uueceNWrUSLVr15avr68uXryo1NRUHT16VAkJCbp06ZIcDof69OmjF198Uf7+/i4/gbJqtHCe6RIAAHAbR6dEVdjcTebPr7C5j0RGXveY06dP6w9/+IOCgoI0adIkeXh46G9/+5u+//57ffDBB2ratKkSExP15JNPaubMmXriiSecHiddaw779u0rh8OhZ599VjVr1tT69esVFxent99+W/fdd5+ka83h4MGDdfz4cT3//PMKCgrStm3b9N577+n111+vkHs0nG4E8+zfv1+rV6/W//7v/xa4nTrvcTJ5ateurS5dumjYsGFq2bKl6yp2ERpBAACcV5kbQUk6cuSIoqOjlZiYKIfDoXbt2ikyMlKhoaGSpISEBA0fPlwvv/yyBg0a5PS4PKdPn9bcuXO1Z88eXb58WS1bttTEiRPVuXPnAselp6dr3rx5io+PV3p6uho3bqxRo0apd+/e5fwmilbqRvC/JSUl6ejRo0pLS1NGRob8/PxUq1YtNWrUqMjn4NxMaAQBAHBehTaC8yqwEYxyrhG0qjI9PiZP8+bNb/qGDwAAAEUrVyMIAABQbgafI2h1NIIAAMAok+8atjqnHh8DAACAyodEEAAAmGXwXcNWV6ZE8Pjx466uAwAAADdYmRrB8PBwPfnkk/rkk0+KfDkyAACA0wy+Ys7qyrQ03K5dO3399ddKSEiQv7+/+vbtqwEDBqhJkyaurg8AAAAVpEyJ4Pr167Vjxw5NmTJFgYGBWrFihR599FENGjRIH374oa5cueLqOgEAQCVlc1TcD0pW5ruGb7/9do0bN05bt27Vli1bNHLkSJ0+fVrTpk3TAw88oFdeeUUHDhxwZa0AAABwIZc8PiYkJETPPvusdu7cqZUrV6pp06Zat26d+vfvr6FDh2r37t2u+BgAAFAZcY2gMS57fMzp06e1detWffzxx/lJYLt27XTkyBGNGzdOvXv31quvvioPDw9XfSQAAKgEWMI1p1yNoN1u186dO7Vx40bt2bNHOTk5uuWWWzRs2DANHDhQTZo00eXLl7Vo0SK9++67qlWrlqZNm+aq2gEAAFAOZWoEf/75Z23cuFGbN29WamqqHA6H2rRpo4EDB6pXr17y8vLKP9bb21tTp05VamqqtmzZQiMIAAAKIhE0pkyNYLdu3WSz2eTt7a0BAwZo0KBBatGiRYljHnjgAW3durVMRQIAAMD1ytQIhoSEaODAgfrDH/4gHx8fp8a0b99eMTExZfk4AABQmZEIGlOmRnDLli2lHhMUFKSgoKCyfBwAAAAqgMvuGgYAACgL7ho2xyXPEQQAAID7oREEAACwKJaGAQCAWSwNG0MiCAAAYFEkggAAwChuFjGHRBAAAMCiSAQBAIBZJILGkAgCAABYFIkgAAAwi0TQGBJBAAAAiyIRBAAARnHXsDk0ggAAwCwaQWNYGgYAALAoEkEAAGAUS8PmVJpE8J///KeaN2+uYcOGmS4FAADALVSKRDArK0t/+tOf5HDwVwoAANwOv76NqRSJ4BtvvKH09HS1bt3adCkAAABuw+0bwYMHD+rtt99WVFSUatSoYbocAABQWo4K/EGJ3LoRtNvtmjFjhtq3b6/HHnvMdDkAAABuxa2vEVy3bp3279+vLVu2mC4FAACUEXcNm+O2jeCvv/6qefPmacyYMWrcuLHpcgAAQFnRCBrjtkvDs2bNUt26dTV27FjTpQAAALglt0wEt2/frl27dmnp0qXKzs5Wdna2JCk3N1eSdOnSJXl4eMjT09NkmQAAwBkkgsa4ZSO4a9cuORwOjRkzpsj9d911lyZOnKhJkybd4MoAAADch1s2guPGjdPjjz9eaPvs2bMlSS+99JJuu+22G10WAAAoA24WMcctG8E777xTd955Z6Htfn5+kqSOHTve4IoAAADcj1s2ggAAoBJxk0QwNzdXy5Yt0+bNm3Xq1CnVrl1bPXv21JQpU1S9enWXjL169areeecdbdy4UadPn1bdunUVFhamKVOm6NZbb5UknTx5Uo888kixnxUXF6eGDRs6dU6VqhFcvXq16RIAAEAlNXv2bG3YsEETJ05UWFiYDh06pLlz5+rYsWN68803XTL2ueee086dOzVhwgR17NhRx44d01//+lft2bNH27Zty1/9lKSJEyfqoYceKvRZeQ2jMypVIwgAANyPO1wjeOLECa1bt04REREaP368JKlDhw6y2+2aNWuWvvnmm2IvTXN27A8//KDt27dr0qRJmjBhgiQpLCxMvr6+euaZZ/Tpp59qwIAB+fPefvvtCg0NLdd5ue1zBAEAQCXhBu8a3rFjhxwOh3r37l1ge69evWSz2RQfH1/usbVr19brr79eoNmTpJCQEEnXXqbhaiSCAAAA15GcnCybzaYmTZoU2O7v76+6devqwIED5R576623ql+/foXG//TTT5KkBg0alPc0CqERBAAAZrnB0nBqaqp8fX2LfFlFQECA0tLSKmTspUuXFBMTo8DAQIWHhxfY9/XXX+vvf/+7kpOTZbfb1aFDB02ZMkWtW7d2+rxoBAEAgGVlZ2fr+PHjJR7j5+enq1evFvvGMg8PD124cKHY8WUdm5mZqcmTJ+vkyZN6++235e3tXWD/jz/+qNGjR6tBgwY6fPiwYmNjNWzYMG3dulVBQUElnlMeGkEAAGCUzeBnnz59Wj179izxmH79+ql69er5r7T9raysrBIfH1OWsWlpaRo7dqySkpK0cOFC3Xffffn7br31Vu3Zs0c1a9aUh4eHJKl9+/Zq06aN+vbtq4ULFyo6OrrEc8pDIwgAACwrKChIycnJ1z1u+vTpysjIUFZWVqF0LzU1Vc2bNy92bJ06dUo19pdfftGIESN04cIFvfvuu4XuRq5ataoCAwMLfU5ISIgaNGigffv2Xfd88nDXMAAAMMsN7hpu0aKFHA6HDh06VGB7SkqKUlJS1KpVK5eMTU9P1+jRo3X16lWtXbu22EfSZGVlFbn96tWr8vLycva0aAQBAACup2vXrqpWrZq2bNlSYHven3v06OGSsS+88ILOnDmjd955p9BdxnkWL16sNm3aFGos//3vf+uXX37R3Xff7fR5sTQMAACMcocHSterV08RERFavny5AgICFBYWpv3792vRokXq37+/WrRokX/siBEjdPToUX3xxRelGvvVV18pPj5eQ4cOVWZmZqElXh8fHzVu3Fj9+/fX2rVrNXbsWP3P//yPGjZsqEOHDmnJkiWqU6eORo8e7fR50QgCAACz3KARlKTIyEj5+/trw4YNWrJkierWrauRI0fmvy0kj91uV25ubqnHfvPNN5Kk9957T++9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UtSqVasb9hktWrSQpEJ9UG5urg4fPqzWrVs7/Zlu2QhKUrdu3bR3716dPXs2f1tmZqbi4uLUpUsX+fj4GKwOAABUJl27dlW1atW0ZcuWAtvz/tyjR48b9hmdOnWSv79/oeM+++wzXbp0qVS1uOXSsCRNmDBBn376qcaNG6dJkybJw8NDf/vb33T58mVFRkaaLg8AAFQi9erVU0REhJYvX66AgACFhYVp//79WrRokfr375+f0knSiBEjdPToUX3xxReSrl2399v0Lj09Xfv27ZN07U7foKAgpz/Dy8tLkZGRmjlzpl577TWFh4fr+PHjmjNnju6991498sgjTp+XzVHSe05uckeOHFF0dLQSExPlcDjUrl07RUZGKjQ01HRpAACgknE4HFq+fLk2bNigU6dOqW7duurbt6/Gjx+f/9QSSRo2bJh++uknffnll5KkkydPltic9evXT6+//nqpPkOSNm3apHfffVdHjx5VzZo11b17dz399NPy9fV1+pzcuhEsraSkJM2fP1/ffvutcnJyFBoaqsmTJyssLMx0aZXW3r17FRsbqx9//FFeXl5q2rSpxo4dqwcffNB0aZXeP//5Tw0bNkx33323Vq9ebbqcSiszM1OLFi3SJ598ovPnz+uOO+7Q8OHD9cQTT5gurdKx2+3atGmT1q9fr2PHjik7O1tNmjTRoEGDNGDAANPlVQpJSUl6+umndfToUX3yySeFHmzM79HKx22vESyt48ePa8iQITp37pxiYmL01ltvydfXVxEREfr+++9Nl1cp7dy5U0899ZR8fX0VGxur6OhoeXl5acyYMdq2bZvp8iq1rKws/elPfyrxxeYoP7vdrnHjxumDDz7Q+PHj9fbbb6tNmzaaMWOGNm/ebLq8SicmJkbTp09XmzZtFBsbqyVLlig4OFgvvfSS/va3v5kuz+2tWbNGAwYM0MWLF4vcz+/RyskyieC0adP06aefaufOnfnvJ87KylJ4eLjuvPNOrVixwmyBlVDv3r2VlZWljz76KD/Ovnz5sh566CE1adJEa9euNVxh5fXXv/5VGzZs0K233qoaNWqQCFaQjz76SFFRUfrrX/9a4OLsESNGqGHDhnrllVcMVlf5dOzYUU2bNtX69evztzkcDnXt2lU+Pj6FLpyH8xITEzVq1CjNmDFDv/zyixYvXlwoEeT3aOVkiUTQ4XAoPj5enTp1yv+XV7r2RO7w8HAlJCQoPT3dYIWVj8Ph0Pjx4zVr1qwC1zR4e3urYcOG+vXXXw1WV7kdPHhQb7/9tqKiolSjRg3T5VRqH374oerXr6/u3bsX2L5y5UqawArg6elZ6N9pm81WquuhULSaNWtq/fr1evzxx4vcz+/RyssSjeCpU6eUkZFR6OXM0rUXNtvtdh08eNBAZZWXzWZTz549de+99xbYnp2drZ9//lkNGjQwVFnlZrfbNWPGDLVv316PPfaY6XIqve+//1533XWXbDab6VIs4amnntJXX32ljRs36vLly8rMzNS6deuUlJSkESNGmC7PrTVr1kwtW7Ysdj+/Rysvt318TGlc7+XM/30MKlZsbKzOnz+vwYMHmy6lUlq3bp3279/PEtkNkJ6ervT0dNWvX19r1qzRqlWr9P/+3/9T3bp1NXToUI0YMUJVq1Y1XWalMnr0aNWoUUMvv/yypk+fLunaKsOcOXPUp08fw9VVbvwerbws0QjmvX+4uJczS9KVK1duaE1WtH79ei1btkz9+/dXeHi46XIqnV9//VXz5s3TmDFj1LhxY9PlVHqZmZmSpO3bt+uOO+7Qiy++KE9PT3300UeaM2eOUlJS9PzzzxuusnLZvXu35syZox49eqhPnz7Kzs7Whx9+qBkzZiggIEBdunQxXWKlxe/RyssSjaCXl5ckFfki57x/ub29vW9oTVazePFixcbGqnfv3vrzn/9supxKadasWapbt67Gjh1ruhRLyEv7srOztXTp0vyXvN933306c+aMVq5cqVGjRhW4ngpll5WVpenTp6t9+/aKjo7O3/673/1Ojz32mF555RXFx8cbrLBy4/do5WWJawTzXr6clpZWaF9KSkqBY+B6M2fOVGxsrEaNGqXo6GhVq2aJv3/cUNu3b9euXbv0wgsvKDs7W5cuXdKlS5eUm5ur3NxcXbp0Kf8/1nCNmjVrqmrVqmrVqlV+E5jn/vvvV05OTqH3haLsjh07prNnz+qBBx4otC8sLEwnTpxgabIC8Xu08rLEb+T69esrICCg0OtdpGsvbPbw8FCzZs0MVFb5LViwQO+//76mT5+u4cOHmy6n0tq1a5ccDofGjBlT5P677rpLEydO1KRJk25wZZWXh4eHmjZtWuQvxtzc3Pxj4Bp5y445OTmF9uWlVPxlp+Lwe7TyskQjKEndunXT5s2bdfbs2fy/tWRmZiouLk5dunSRj4+P4Qorn/j4eL311lt69tlnaQIr2Lhx44p87MPs2bMlSS+99JJuu+22G11WpdezZ08tXLhQhw4dKnA35e7du+Xt7a3mzZsbrK5yadq0qapXr64vv/xS48aNK7AvMTFRgYGBql+/vqHqrIHfo5WTZRrBCRMm6NNPP9W4ceM0adIkeXh46G9/+5suX76syMhI0+VVOjk5OXr99dcVFBSke+65J//F2v8tJCSkyAuPUXp33nmn7rzzzkLb/fz8JF17EC9cb+jQodq8ebNGjRqladOmqWbNmvrHP/6hhIQETZo0iec4ulCNGjU0evRoxcbGaurUqerVq5ccDoc2b96s5ORkzZw5k8f4lMPJkyd17tw5SdKZM2ckSYcPH86/KSokJITfo5WUZd4sIklHjhxRdHS0EhMT5XA41K5dO0VGRio0NNR0aZXO9V6wLUk7duxQUFDQDarImoYNGyZJvFmkAp09e1YxMTHavXu3Ll68qEaNGmn48OG8+7aCfPDBB1qzZo1++ukn2Ww2BQcHKyIiQj179jRdmlubNm1aia9FzPvvNb9HKx9LNYIAAAD4D0vcNQwAAIDCaAQBAAAsikYQAADAomgEAQAALIpGEAAAwKJoBAEAACyKRhAAAMCiaAQBAAAsikYQAADAomgEARj1448/qn379nruuedcMl9GRoZ69eqlRx99VBkZGS6ZEwAqK14xB8CYCxcuqE+fPvLz89PGjRvl5eXlknl/+ukn9e/fX/fee6/eeustl8wJAJURiSAAY1599VX98ssvmjVrlsuaQElq3LixJk2apF27dunvf/+7y+YFgMqGRBCAEfv371f//v3VuXNnLV++3OXzZ2Vl6fe//73sdrt27twpT09Pl38GALg7EkEApfLNN9+oRYsWGjRokH7798iNGzcqJCREU6dOve48q1evliSNGjWqwPZNmzYpJCREK1as0M6dO9W3b1+1adNG999/v1577TXl5OTo559/1oQJExQWFqawsDA9+eSTOnLkSIF5PD099fjjj+vs2bP6+OOPy3nWAFA50QgCKJWOHTtq5MiR+te//qW1a9fmb09JSdHcuXN1++23609/+lOJczgcDn3xxRfy8fHR3XffXeQx3333nV577TX17dtX06dPl7+/v1auXKmFCxfqySefVMOGDfXCCy/ooYce0ldffaUpU6YUmqNLly6SpE8++aQcZwwAlVc10wUAcD+TJ0/Wnj17NH/+fD3yyCOqX7++Zs+erYyMDL3xxhvy9fUtcXxSUpJSU1P18MMPq1q1ov8ztGPHDsXFxem2226TJDVr1kwDBw7UsmXLNGPGDA0ZMkSS1K9fP/373//WoUOHdOLECd1xxx35c4SGhsrf31/ffvut7Ha7qlTh774A8N/4ryKAUvP09FR0dLSys7P18ssva+fOndq2bZvGjBmjjh07Xnf80aNHJUmNGjUq9pjOnTvnN4GS1LJlS0lSlSpV9Pjjjxc4tkWLFpKkM2fOFNhetWpVNWjQQJcuXdL58+edOjcAsBIaQQBlEhwcrKioKO3atUtRUVFq1aqVJk6c6NTYc+fOSZJq165d7DG33357gT/n3VVcu3btQncY5/05Jyen0Dy1atWSJKWlpTlVGwBYCY0ggDLr27evvLy8lJmZqX79+snDw8Opcenp6ZIkPz+/Yo8p7i7f0t79m/cZeZ8JAPgPGkEAZfbKK68oJydHTZo00aJFi/TLL784Ne6WW26RpBvy5o+8z8j7TADAf9AIAiiTTz75RB999JFGjhyp2NhYXblyRc8//7zsdvt1xwYEBEiSUlNTK7rM/M/IWyIGAPwHjSCAUjt9+rRmzZqlJk2aaNKkSWrSpIkmTpyoxMREpx4OnXeTSN5NIxUlNzdXJ06ckI+Pj2rWrFmhnwUA7ohGEECpOBwOvfjii0pPT9drr72Wf83eyJEj1apVKy1cuFAHDhwocY7mzZurdu3aSkhIKPIGD1fZt2+fLly4oA4dOvDoGAAoAv9lBFAqa9eu1Z49e/Tkk0+qXbt2+durVaum1157TZL07LPP6urVq8XOYbPZ1KVLF126dEn//Oc/K6zWL774QpLUs2fPCvsMAHBnvGsYgBG8axgAzCMRBGBEq1at1KdPH+3Zs0f/+te/XD7/6tWrdfr0aT3zzDM0gQBQDBJBAMacP39effv2lZ+fnzZu3FjoQdFldfToUfXr10/33nuv3nrrLZfMCQCVEY0gAKN+/PFHDRkyRL///e8VHR1d7vkuXryoJ554QjabTevWrSvxodUAYHU0ggAAABbFNYIAAAAWRSMIAABgUTSCAAAAFkUjCAAAYFE0ggAAABZFIwgAAGBRNIIAAAAWRSMIAABgUf8f86ca4Yn6XeQAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dft.topological_charge_density(f.sel(\"z\")).mpl()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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d/9bcnKyPDw81KxZszKPq1q1qoKDg4s9TpJatWolSWrRooUOHz4su91e4nGu5FQj+N577+nChQsaOHCgxowZo8TExEJF/pbdbldCQoJGjx6tQYMGKSMjQ++9955LigYAAHCVbt26ae/evTp79mz+tszMTMXFxalLly7y8fEp17ju3bvr4MGDSkpKyj/Obrdr69atat68uRo1apR/XHp6unbu3Fngc7Zs2aJatWrpnnvucdk557E5HA6nVubT09M1e/Zs/eMf/5DNZpOPj4/uueceNWrUSLVr15avr68uXryo1NRUHT16VAkJCbp06ZIcDof69OmjF198Uf7+/i4/gbJqtHCe6RIAAHAbR6dEVdjcTebPr7C5j0RGXveY06dP6w9/+IOCgoI0adIkeXh46G9/+5u+//57ffDBB2ratKkSExP15JNPaubMmXriiSecHiddaw779u0rh8OhZ599VjVr1tT69esVFxent99+W/fdd5+ka83h4MGDdfz4cT3//PMKCgrStm3b9N577+n111+vkHs0nG4E8+zfv1+rV6/W//7v/xa4nTrvcTJ5ateurS5dumjYsGFq2bKl6yp2ERpBAACcV5kbQUk6cuSIoqOjlZiYKIfDoXbt2ikyMlKhoaGSpISEBA0fPlwvv/yyBg0a5PS4PKdPn9bcuXO1Z88eXb58WS1bttTEiRPVuXPnAselp6dr3rx5io+PV3p6uho3bqxRo0apd+/e5fwmilbqRvC/JSUl6ejRo0pLS1NGRob8/PxUq1YtNWrUqMjn4NxMaAQBAHBehTaC8yqwEYxyrhG0qjI9PiZP8+bNb/qGDwAAAEUrVyMIAABQbgafI2h1NIIAAMAok+8atjqnHh8DAACAyodEEAAAmGXwXcNWV6ZE8Pjx466uAwAAADdYmRrB8PBwPfnkk/rkk0+KfDkyAACA0wy+Ys7qyrQ03K5dO3399ddKSEiQv7+/+vbtqwEDBqhJkyaurg8AAAAVpEyJ4Pr167Vjxw5NmTJFgYGBWrFihR599FENGjRIH374oa5cueLqOgEAQCVlc1TcD0pW5ruGb7/9do0bN05bt27Vli1bNHLkSJ0+fVrTpk3TAw88oFdeeUUHDhxwZa0AAABwIZc8PiYkJETPPvusdu7cqZUrV6pp06Zat26d+vfvr6FDh2r37t2u+BgAAFAZcY2gMS57fMzp06e1detWffzxx/lJYLt27XTkyBGNGzdOvXv31quvvioPDw9XfSQAAKgEWMI1p1yNoN1u186dO7Vx40bt2bNHOTk5uuWWWzRs2DANHDhQTZo00eXLl7Vo0SK9++67qlWrlqZNm+aq2gEAAFAOZWoEf/75Z23cuFGbN29WamqqHA6H2rRpo4EDB6pXr17y8vLKP9bb21tTp05VamqqtmzZQiMIAAAKIhE0pkyNYLdu3WSz2eTt7a0BAwZo0KBBatGiRYljHnjgAW3durVMRQIAAMD1ytQIhoSEaODAgfrDH/4gHx8fp8a0b99eMTExZfk4AABQmZEIGlOmRnDLli2lHhMUFKSgoKCyfBwAAAAqgMvuGgYAACgL7ho2xyXPEQQAAID7oREEAACwKJaGAQCAWSwNG0MiCAAAYFEkggAAwChuFjGHRBAAAMCiSAQBAIBZJILGkAgCAABYFIkgAAAwi0TQGBJBAAAAiyIRBAAARnHXsDk0ggAAwCwaQWNYGgYAALAoEkEAAGAUS8PmVJpE8J///KeaN2+uYcOGmS4FAADALVSKRDArK0t/+tOf5HDwVwoAANwOv76NqRSJ4BtvvKH09HS1bt3adCkAAABuw+0bwYMHD+rtt99WVFSUatSoYbocAABQWo4K/EGJ3LoRtNvtmjFjhtq3b6/HHnvMdDkAAABuxa2vEVy3bp3279+vLVu2mC4FAACUEXcNm+O2jeCvv/6qefPmacyYMWrcuLHpcgAAQFnRCBrjtkvDs2bNUt26dTV27FjTpQAAALglt0wEt2/frl27dmnp0qXKzs5Wdna2JCk3N1eSdOnSJXl4eMjT09NkmQAAwBkkgsa4ZSO4a9cuORwOjRkzpsj9d911lyZOnKhJkybd4MoAAADch1s2guPGjdPjjz9eaPvs2bMlSS+99JJuu+22G10WAAAoA24WMcctG8E777xTd955Z6Htfn5+kqSOHTve4IoAAADcj1s2ggAAoBJxk0QwNzdXy5Yt0+bNm3Xq1CnVrl1bPXv21JQpU1S9enWXjL169areeecdbdy4UadPn1bdunUVFhamKVOm6NZbb5UknTx5Uo888kixnxUXF6eGDRs6dU6VqhFcvXq16RIAAEAlNXv2bG3YsEETJ05UWFiYDh06pLlz5+rYsWN68803XTL2ueee086dOzVhwgR17NhRx44d01//+lft2bNH27Zty1/9lKSJEyfqoYceKvRZeQ2jMypVIwgAANyPO1wjeOLECa1bt04REREaP368JKlDhw6y2+2aNWuWvvnmm2IvTXN27A8//KDt27dr0qRJmjBhgiQpLCxMvr6+euaZZ/Tpp59qwIAB+fPefvvtCg0NLdd5ue1zBAEAQCXhBu8a3rFjhxwOh3r37l1ge69evWSz2RQfH1/usbVr19brr79eoNmTpJCQEEnXXqbhaiSCAAAA15GcnCybzaYmTZoU2O7v76+6devqwIED5R576623ql+/foXG//TTT5KkBg0alPc0CqERBAAAZrnB0nBqaqp8fX2LfFlFQECA0tLSKmTspUuXFBMTo8DAQIWHhxfY9/XXX+vvf/+7kpOTZbfb1aFDB02ZMkWtW7d2+rxoBAEAgGVlZ2fr+PHjJR7j5+enq1evFvvGMg8PD124cKHY8WUdm5mZqcmTJ+vkyZN6++235e3tXWD/jz/+qNGjR6tBgwY6fPiwYmNjNWzYMG3dulVBQUElnlMeGkEAAGCUzeBnnz59Wj179izxmH79+ql69er5r7T9raysrBIfH1OWsWlpaRo7dqySkpK0cOFC3Xffffn7br31Vu3Zs0c1a9aUh4eHJKl9+/Zq06aN+vbtq4ULFyo6OrrEc8pDIwgAACwrKChIycnJ1z1u+vTpysjIUFZWVqF0LzU1Vc2bNy92bJ06dUo19pdfftGIESN04cIFvfvuu4XuRq5ataoCAwMLfU5ISIgaNGigffv2Xfd88nDXMAAAMMsN7hpu0aKFHA6HDh06VGB7SkqKUlJS1KpVK5eMTU9P1+jRo3X16lWtXbu22EfSZGVlFbn96tWr8vLycva0aAQBAACup2vXrqpWrZq2bNlSYHven3v06OGSsS+88ILOnDmjd955p9BdxnkWL16sNm3aFGos//3vf+uXX37R3Xff7fR5sTQMAACMcocHSterV08RERFavny5AgICFBYWpv3792vRokXq37+/WrRokX/siBEjdPToUX3xxRelGvvVV18pPj5eQ4cOVWZmZqElXh8fHzVu3Fj9+/fX2rVrNXbsWP3P//yPGjZsqEOHDmnJkiWqU6eORo8e7fR50QgCAACz3KARlKTIyEj5+/trw4YNWrJkierWrauRI0fmvy0kj91uV25ubqnHfvPNN5Kk9957T++9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UtSqVasb9hktWrSQpEJ9UG5urg4fPqzWrVs7/Zlu2QhKUrdu3bR3716dPXs2f1tmZqbi4uLUpUsX+fj4GKwOAABUJl27dlW1atW0ZcuWAtvz/tyjR48b9hmdOnWSv79/oeM+++wzXbp0qVS1uOXSsCRNmDBBn376qcaNG6dJkybJw8NDf/vb33T58mVFRkaaLg8AAFQi9erVU0REhJYvX66AgACFhYVp//79WrRokfr375+f0knSiBEjdPToUX3xxReSrl2399v0Lj09Xfv27ZN07U7foKAgpz/Dy8tLkZGRmjlzpl577TWFh4fr+PHjmjNnju6991498sgjTp+XzVHSe05uckeOHFF0dLQSExPlcDjUrl07RUZGKjQ01HRpAACgknE4HFq+fLk2bNigU6dOqW7duurbt6/Gjx+f/9QSSRo2bJh++uknffnll5KkkydPltic9evXT6+//nqpPkOSNm3apHfffVdHjx5VzZo11b17dz399NPy9fV1+pzcuhEsraSkJM2fP1/ffvutcnJyFBoaqsmTJyssLMx0aZXW3r17FRsbqx9//FFeXl5q2rSpxo4dqwcffNB0aZXeP//5Tw0bNkx33323Vq9ebbqcSiszM1OLFi3SJ598ovPnz+uOO+7Q8OHD9cQTT5gurdKx2+3atGmT1q9fr2PHjik7O1tNmjTRoEGDNGDAANPlVQpJSUl6+umndfToUX3yySeFHmzM79HKx22vESyt48ePa8iQITp37pxiYmL01ltvydfXVxEREfr+++9Nl1cp7dy5U0899ZR8fX0VGxur6OhoeXl5acyYMdq2bZvp8iq1rKws/elPfyrxxeYoP7vdrnHjxumDDz7Q+PHj9fbbb6tNmzaaMWOGNm/ebLq8SicmJkbTp09XmzZtFBsbqyVLlig4OFgvvfSS/va3v5kuz+2tWbNGAwYM0MWLF4vcz+/RyskyieC0adP06aefaufOnfnvJ87KylJ4eLjuvPNOrVixwmyBlVDv3r2VlZWljz76KD/Ovnz5sh566CE1adJEa9euNVxh5fXXv/5VGzZs0K233qoaNWqQCFaQjz76SFFRUfrrX/9a4OLsESNGqGHDhnrllVcMVlf5dOzYUU2bNtX69evztzkcDnXt2lU+Pj6FLpyH8xITEzVq1CjNmDFDv/zyixYvXlwoEeT3aOVkiUTQ4XAoPj5enTp1yv+XV7r2RO7w8HAlJCQoPT3dYIWVj8Ph0Pjx4zVr1qwC1zR4e3urYcOG+vXXXw1WV7kdPHhQb7/9tqKiolSjRg3T5VRqH374oerXr6/u3bsX2L5y5UqawArg6elZ6N9pm81WquuhULSaNWtq/fr1evzxx4vcz+/RyssSjeCpU6eUkZFR6OXM0rUXNtvtdh08eNBAZZWXzWZTz549de+99xbYnp2drZ9//lkNGjQwVFnlZrfbNWPGDLVv316PPfaY6XIqve+//1533XWXbDab6VIs4amnntJXX32ljRs36vLly8rMzNS6deuUlJSkESNGmC7PrTVr1kwtW7Ysdj+/Rysvt318TGlc7+XM/30MKlZsbKzOnz+vwYMHmy6lUlq3bp3279/PEtkNkJ6ervT0dNWvX19r1qzRqlWr9P/+3/9T3bp1NXToUI0YMUJVq1Y1XWalMnr0aNWoUUMvv/yypk+fLunaKsOcOXPUp08fw9VVbvwerbws0QjmvX+4uJczS9KVK1duaE1WtH79ei1btkz9+/dXeHi46XIqnV9//VXz5s3TmDFj1LhxY9PlVHqZmZmSpO3bt+uOO+7Qiy++KE9PT3300UeaM2eOUlJS9PzzzxuusnLZvXu35syZox49eqhPnz7Kzs7Whx9+qBkzZiggIEBdunQxXWKlxe/RyssSjaCXl5ckFfki57x/ub29vW9oTVazePFixcbGqnfv3vrzn/9supxKadasWapbt67Gjh1ruhRLyEv7srOztXTp0vyXvN933306c+aMVq5cqVGjRhW4ngpll5WVpenTp6t9+/aKjo7O3/673/1Ojz32mF555RXFx8cbrLBy4/do5WWJawTzXr6clpZWaF9KSkqBY+B6M2fOVGxsrEaNGqXo6GhVq2aJv3/cUNu3b9euXbv0wgsvKDs7W5cuXdKlS5eUm5ur3NxcXbp0Kf8/1nCNmjVrqmrVqmrVqlV+E5jn/vvvV05OTqH3haLsjh07prNnz+qBBx4otC8sLEwnTpxgabIC8Xu08rLEb+T69esrICCg0OtdpGsvbPbw8FCzZs0MVFb5LViwQO+//76mT5+u4cOHmy6n0tq1a5ccDofGjBlT5P677rpLEydO1KRJk25wZZWXh4eHmjZtWuQvxtzc3Pxj4Bp5y445OTmF9uWlVPxlp+Lwe7TyskQjKEndunXT5s2bdfbs2fy/tWRmZiouLk5dunSRj4+P4Qorn/j4eL311lt69tlnaQIr2Lhx44p87MPs2bMlSS+99JJuu+22G11WpdezZ08tXLhQhw4dKnA35e7du+Xt7a3mzZsbrK5yadq0qapXr64vv/xS48aNK7AvMTFRgYGBql+/vqHqrIHfo5WTZRrBCRMm6NNPP9W4ceM0adIkeXh46G9/+5suX76syMhI0+VVOjk5OXr99dcVFBSke+65J//F2v8tJCSkyAuPUXp33nmn7rzzzkLb/fz8JF17EC9cb+jQodq8ebNGjRqladOmqWbNmvrHP/6hhIQETZo0iec4ulCNGjU0evRoxcbGaurUqerVq5ccDoc2b96s5ORkzZw5k8f4lMPJkyd17tw5SdKZM2ckSYcPH86/KSokJITfo5WUZd4sIklHjhxRdHS0EhMT5XA41K5dO0VGRio0NNR0aZXO9V6wLUk7duxQUFDQDarImoYNGyZJvFmkAp09e1YxMTHavXu3Ll68qEaNGmn48OG8+7aCfPDBB1qzZo1++ukn2Ww2BQcHKyIiQj179jRdmlubNm1aia9FzPvvNb9HKx9LNYIAAAD4D0vcNQwAAIDCaAQBAAAsikYQAADAomgEAQAALIpGEAAAwKJoBAEAACyKRhAAAMCiaAQBAAAsikYQAADAomgEARj1448/qn379nruuedcMl9GRoZ69eqlRx99VBkZGS6ZEwAqK14xB8CYCxcuqE+fPvLz89PGjRvl5eXlknl/+ukn9e/fX/fee6/eeustl8wJAJURiSAAY1599VX98ssvmjVrlsuaQElq3LixJk2apF27dunvf/+7y+YFgMqGRBCAEfv371f//v3VuXNnLV++3OXzZ2Vl6fe//73sdrt27twpT09Pl38GALg7EkEApfLNN9+oRYsWGjRokH7798iNGzcqJCREU6dOve48q1evliSNGjWqwPZNmzYpJCREK1as0M6dO9W3b1+1adNG999/v1577TXl5OTo559/1oQJExQWFqawsDA9+eSTOnLkSIF5PD099fjjj+vs2bP6+OOPy3nWAFA50QgCKJWOHTtq5MiR+te//qW1a9fmb09JSdHcuXN1++23609/+lOJczgcDn3xxRfy8fHR3XffXeQx3333nV577TX17dtX06dPl7+/v1auXKmFCxfqySefVMOGDfXCCy/ooYce0ldffaUpU6YUmqNLly6SpE8++aQcZwwAlVc10wUAcD+TJ0/Wnj17NH/+fD3yyCOqX7++Zs+erYyMDL3xxhvy9fUtcXxSUpJSU1P18MMPq1q1ov8ztGPHDsXFxem2226TJDVr1kwDBw7UsmXLNGPGDA0ZMkSS1K9fP/373//WoUOHdOLECd1xxx35c4SGhsrf31/ffvut7Ha7qlTh774A8N/4ryKAUvP09FR0dLSys7P18ssva+fOndq2bZvGjBmjjh07Xnf80aNHJUmNGjUq9pjOnTvnN4GS1LJlS0lSlSpV9Pjjjxc4tkWLFpKkM2fOFNhetWpVNWjQQJcuXdL58+edOjcAsBIaQQBlEhwcrKioKO3atUtRUVFq1aqVJk6c6NTYc+fOSZJq165d7DG33357gT/n3VVcu3btQncY5/05Jyen0Dy1atWSJKWlpTlVGwBYCY0ggDLr27evvLy8lJmZqX79+snDw8Opcenp6ZIkPz+/Yo8p7i7f0t79m/cZeZ8JAPgPGkEAZfbKK68oJydHTZo00aJFi/TLL784Ne6WW26RpBvy5o+8z8j7TADAf9AIAiiTTz75RB999JFGjhyp2NhYXblyRc8//7zsdvt1xwYEBEiSUlNTK7rM/M/IWyIGAPwHjSCAUjt9+rRmzZqlJk2aaNKkSWrSpIkmTpyoxMREpx4OnXeTSN5NIxUlNzdXJ06ckI+Pj2rWrFmhnwUA7ohGEECpOBwOvfjii0pPT9drr72Wf83eyJEj1apVKy1cuFAHDhwocY7mzZurdu3aSkhIKPIGD1fZt2+fLly4oA4dOvDoGAAoAv9lBFAqa9eu1Z49e/Tkk0+qXbt2+durVaum1157TZL07LPP6urVq8XOYbPZ1KVLF126dEn//Oc/K6zWL774QpLUs2fPCvsMAHBnvGsYgBG8axgAzCMRBGBEq1at1KdPH+3Zs0f/+te/XD7/6tWrdfr0aT3zzDM0gQBQDBJBAMacP39effv2lZ+fnzZu3FjoQdFldfToUfXr10/33nuv3nrrLZfMCQCVEY0gAKN+/PFHDRkyRL///e8VHR1d7vkuXryoJ554QjabTevWrSvxodUAYHU0ggAAABbFNYIAAAAWRSMIAABgUTSCAAAAFkUjCAAAYFE0ggAAABZFIwgAAGBRNIIAAAAWRSMIAABgUf8f86ca4Yn6XeQAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dft.topological_charge_density(f.sel(\"z\"), method=\"berg-luescher\").mpl()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Topological charge has an additional option ``absolute``. If ``True``, the absolute value of topological charge density is computed before integration. This can be usefull for systems with areas of opposite sign of topological charge density to avoid cancellation." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dft.topological_charge(f.sel(\"z\"), absolute=True)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dft.topological_charge(f.sel(\"z\"), method=\"berg-luescher\", absolute=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Angles between cells\n", "\n", "There are two functions to calculate angles between neighbouring cells. This is only possible for three-dimensional vector fields (``nvdim=3``).\n", "\n", "To visualise this, we use a field with a step function." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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/KfMY6ZPn67Y2NiaFV8GGjwAAFCnHTp0SEOHDlXr1q01a9Ys+fv7a9myZYqLi9OKFSvUpUsXt3NCQ0O1bt26MsebPHmyfHx8Sm377W9/qyeffNLt2Ouvv96cL/EzNHgAAMBSVr+qbP78+XI6nVq0aJGaNGkiSerevbuio6M1d+5cLV261O0cX19fde7c2W37pk2btHv3bq1Zs6bU9saNG5d5vKdYn4kCAIA6zWk4PPapiGEYSktLU8+ePUuaO+lKAxcdHa1t27YpNze3Ut/j8uXLevHFFzVw4EDdcsst1f55mIEGDwAA1FlHjx5VXl6eIiIi3PZFRETI5XJpz549lRpr1apVOnHihMaNG2d2mVXGFC0AALCUlY9JycnJkSQFBwe77SveVnzM1RQUFOivf/2r7rvvPjVv3txt/+HDhzVmzBh9//33ys3NVZs2bRQfH6+YmJgafoOykeABAIA6q6CgQNKVKdmfK14ocenSpQrHef/993Xq1CnFx8eXuf/HH39U165dlZKSolmzZsnX11dPPfWUPvnkkxpUXz4SPAAAYCmXhY9J8fPzkyQVFha67Stu/gICAioc5+9//7u6dOmiVq1aue1bt26d/P391aBBg5Jtd955p/r166cZM2bo3nvvrW755SLBAwAAdVZISIgk6fTp0277srOzSx1TnpMnT+qf//ynevXqVeb+Jk2alGrupCtN429+8xsdO3ZMp06dqkblV0eCBwAALGXlPXjNmzdXcHBwyUOJ/1tWVpZ8fHzUtm3bq46Rnp4uwzB01113lbnf6XRKkurVq1dqe/HUb3GKaCYSPAAAUKf16dNHW7duLZWk5efna+PGjYqKilJgYOBVz//+++/LbQS/+eYbde7cWatXry61/fz589q6davatWuna6+91pwv8l9o8AAAgKWsfA6eJI0aNUoBAQFKTEzU559/rq+++kqjRo3SxYsXlZSUJEnKyMhQx44d9c4777idf+DAAbVo0cItoZOkHj16qEuXLkpOTtbixYuVkZGhDRs2aPjw4Tp9+rSefvrpmv3wysEULQAAsJTVb7Jo1qyZVq5cqeTkZCUlJckwDHXt2lVvv/222rRpI+nKA5GdTqdcLpfb+efOnSs35atfv77eeOMNLV68WKtWrdKrr76qBg0aqEuXLlq+fLm6d+/uke/kMAzD8MjItZzruPsDDQFYr0+LrlaXAKAMn7nWemzsZXt7emzs4RFbPTZ2bUaCBwAALOW08DEpdsVPFAAAwGZI8AAAgKVcqtxiCFQeCR4AAIDNkOABAABLcQ+e+fiJAgAA2AwJHgAAsJSVryqzKxo8AABgKVcl3ziByqNlBgAAsBkSPAAAYCmmaM3HTxQAAMBmSPAAAIClXDwmxXT8RAEAAGyGBA8AAFjKyavKTEeCBwAAYDMkeAAAwFLcg2c+fqIAAAA2Q4IHAAAsxT145qPBAwAAlmKK1nz8RAEAAGzGaxM8l8uld999V6tXr9aBAwdUWFio8PBwDRkyRLGxsVaXBwAAKslJgmc6r23wZs2apSVLlmjo0KEaP368nE6nPvzwQ73wwgs6e/asHn/8catLBAAAsITXNnhr1qxRt27dNHny5JJtd9xxh7Zv366PPvqIBg8AAC/hYpGF6bw2E/X19VWDBg1KbXM4HAoKCrKoIgAAgNrBaxu8xx57TF9//bXWrVunixcvKj8/X6tWrVJmZqaGDx9udXkAAKCSnMY1HvvUVV47Rfv444+rQYMG+vOf/6xJkyZJkgICAjRz5kzdd999FlcHAABgHa9t8LZs2aKZM2eqb9++uu+++1RYWKj33ntPkydPVnBwsKKioqwuEQAAVILL4B48s3llg1dQUKBJkyapW7duSk5OLtn+29/+Vvfff7+mTZumtLQ0CysEAACV5fTeO8ZqLa/8iR44cECnTp3SnXfe6bYvMjJShw8fVk5OjgWVAQAAWM8rE7xLly5JkoqKitz2FRYWSrqS8gEAgNqPKVrzeWWC16ZNG/n7++urr75y25eRkaGQkBA1b97cgsoAAACs55UJXoMGDfT4448rJSVFzz77rPr16yfDMJSamqqsrCxNmTJFDgf/GgAAwBu4vDNvqtW8ssGTpNGjR6tZs2ZasWKFNmzYIIfDoYiICM2dO1cxMTFWlwcAAGAZr23wJCk2NlaxsbFWlwEAAGrAyT14piMTBQAAsBmvTvAAAID3YxWt+WjwAACApVx1+J2xnsJPFAAAwGZI8AAAgKWcYorWbCR4AAAANkOCBwAALMUiC/OR4AEAANgMCR4AALAUq2jNR4MHAADqvMzMTM2ZM0fbt29XUVGROnfurLFjxyoyMrLcc4YNG6aMjIwy9yUmJuqpp56q0fg1QYMHAAAs5bJ4Fe2hQ4c0dOhQtW7dWrNmzZK/v7+WLVumuLg4rVixQl26dCn33E6dOmnq1Klu20NDQ00Zv7po8AAAgKWsfhft/Pnz5XQ6tWjRIjVp0kSS1L17d0VHR2vu3LlaunRpuecGBgaqc+fOHhu/upj0BgAAdZZhGEpLS1PPnj1Lmi9J8vX1VXR0tLZt26bc3NxaO355aPAAAIClXMY1HvtU5OjRo8rLy1NERITbvoiICLlcLu3Zs6fa383T45eHBg8AANRZOTk5kqTg4GC3fcXbio8py5kzZzRx4kT16tVLN998s/r166cVK1aYNn51cQ8eAACwlJUPOi4oKJB0Zcr053x8fCRJly5dKvf8I0eOKDo6WrNnz1Zubq5Wr16tadOm6dKlSxoxYkSNx68uGjwAAFBn+fn5SZIKCwvd9hU3ZwEBAWWem5KSovr16ysoKKhkW69evTR48GDNmzdPgwcPrtH4NcEULQAAsJRLDo99KhISEiJJOn36tNu+7OzsUsf8XOPGjUs1d5LkcDh0zz336NKlS/rxxx9rNH5N0OABAIA6q3nz5goODlZWVpbbvqysLPn4+Kht27ZlnutyuVRUVOS2vXjK1c/Pr0bj1wQNHgAAsJTLcHjsUxl9+vTR1q1bderUqZJt+fn52rhxo6KiohQYGOh2zqFDh3TLLbdo9uzZpbY7nU6lpaWpcePGatOmTbXHrykaPAAAYCkrH5MiSaNGjVJAQIASExP1+eef66uvvtKoUaN08eJFJSUlSZIyMjLUsWNHvfPOO5KkG2+8Ub1799ayZcs0e/Zsff3110pPT1dCQoL27NmjCRMmlCyiqMz4ZmORBQAAqNOaNWumlStXKjk5WUlJSTIMQ127dtXbb79dksIZhiGn0ymXy1Vy3syZM9WxY0etXbtWb731lnx8fNSxY0ctWLBAd999d5XGN5vDMAzDIyPXcq7j7g8cBGC9Pi26Wl0CgDJ85lrrsbFjt4702Nhrey7w2Ni1GVO0AAAANsMULQAAsFRlHmeCqiHBAwAAsBkSPAAAYCkrX1VmVyR4AAAANkOCBwAALEWCZz4aPAAAYCkaPPMxRQsAAGAzJHgAAMBSJHjmI8EDAACwGRI8AABgKR50bD4SPAAAAJshwQMAAJbiHjzzkeABAADYDAkeAACwFAme+WjwAACApWjwzMcULQAAgM2Q4AEAAEuR4JmPBA8AAMBmSPAAAIClDBI805HgAQAA2AwJHgAAsBSvKjMfCR4AAIDNkOABAABLsYrWfDR4AADAUiyyMB9TtAAAADZDggcAACzFFK35SPAAAABshgQPAABYinvwzEeCBwAAYDMkeAAAwFLcg2c+EjwAAACbIcEDAACWMgyrK7AfEjwAAACbIcEDAACWcol78MxGgwcAACzFY1LMxxQtAACAzZDgAQAAS/GYFPOR4AEAANgMCR4AALAUj0kxHwkeAACAzZDgAQAAS7GK1nwkeAAAADZDggcAACxFgmc+GjwAAGCp2vCYlMzMTM2ZM0fbt29XUVGROnfurLFjxyoyMvKq523dulUpKSn64Ycf5OfnpzZt2uiJJ57QXXfdVXLMsGHDlJGRUeb5iYmJeuqpp0z9LhINHgAAqOMOHTqkoUOHqnXr1po1a5b8/f21bNkyxcXFacWKFerSpUuZ523atEkjR45UVFSUUlJSZBiGli5dqoSEBL3yyivq27dvybGdOnXS1KlT3cYIDQ31yHeiwQMAAJay+jEp8+fPl9Pp1KJFi9SkSRNJUvfu3RUdHa25c+dq6dKlZZ43d+5ctWzZUvPnz5ePj48kKTIyUr169dLy5ctLNXiBgYHq3Lmzx79LMRo8AABQZxmGobS0NPXs2bOkuZMkX19fRUdHa/ny5crNzdW1117rdt7IkSPVpEmTkuZOkgICAnTTTTfp+PHjv9h3KAsNHgAAsJSViyyOHj2qvLw8RUREuO2LiIiQy+XSnj171KNHj1L7HA6HYmJi3M4pLCzUwYMH1aFDB4/VXBk8JgUAANRZOTk5kqTg4GC3fcXbio+pjJSUFJ09e1YPPfRQqe1nzpzRxIkT1atXL918883q16+fVqxYUYPKr44EDwAAWMrKBK+goEDSlSnZnyueer106VKlxlq9erUWL16sQYMGKTo6utS+I0eOKDo6WrNnz1Zubq5Wr16tadOm6dKlSxoxYkQNv4U7GjwAAFBn+fn5Sboytfpzxc1fQEBAheO89tprSklJUf/+/fWXv/yl1L6UlBTVr19fQUFBJdt69eqlwYMHa968eRo8eHCpfWZgihYAAFjK8OCnIiEhIZKk06dPu+3Lzs4udUx5pkyZopSUFMXHxys5OVn165fOzxo3buzWwDkcDt1zzz26dOmSfvzxx0pUWjUkeAAAwFJWTtE2b95cwcHBysrKctuXlZUlHx8ftW3bttzz586dq3feeUeTJk3SI488UuYxLpdLLpfLrfErnvotThHNRIIHAADqtD59+mjr1q06depUybb8/Hxt3LhRUVFRCgwMLPO8tLQ0LVy4UOPHjy+3uTt06JBuueUWzZ49u9R2p9OptLQ0NW7cWG3atDHvy/wfEjwAAGAtix90PGrUKH3yySdKTEzUmDFj5OPjozfeeEMXL15UUlKSJCkjI0OPPvqopkyZosGDB6uoqEgzZsxQWFiYfvWrX2nnzp1u47Zr10433nijevfurWXLlql+/frq2bOn8vPztXLlSu3Zs0fTp08v9Rw9s3h1g5efn6958+Zp/fr1Onv2rG644QY98sgjGjx4sNWlAQAAL9GsWTOtXLlSycnJSkpKkmEY6tq1q95+++2SdM0wDDmdTrlcLknS8ePHdfjwYUlSbGxsmeOmp6crLCxMM2fOVMeOHbV27Vq99dZb8vHxUceOHbVgwQLdfffdHvlODsOw+gUh1eNyufToo49q165dmjBhgsLDw5Wamqp3331XM2bM0MCBA69+/nH3BxoCsF6fFl2tLgFAGT5zrfXY2BFrp3ts7L2xL3hs7NrMaxO89evXa9u2baVe5hsZGamjR4/q+++/r7DBAwAAsCuvbfDee+89NW/eXPfee2+p7cuWLbOoIgAAUB3eOZdYu3ntKtodO3bo1ltvlcNh3dJqAACA2sgrG7zc3Fzl5uaqefPmWrFihfr06aObb75Zd999t/7617/K6XRaXSIAAKgkw3B47FNXeeUUbX5+viTp008/1Q033KDnn39evr6++uijjzRz5kxlZ2frmWeesbhKAABQKXW4EfMUr2zw6tWrJ+nKe+MWLVokf39/SdLtt9+ukydPatmyZYqPj1eTJk2sLBMAAMASXjlF27hxY9WrV0+dOnUqae6K3XHHHSoqKtLevXstqg4AAFSFYXjuU1d5ZYPn4+OjNm3alPli4OL77zzxVGgAAABv4JUNniTFxMRo586dbkndli1bFBAQoPbt21tUGQAAqBLDg586ymsbvIcfflg33nij4uPjtWHDBn399dd67rnntG3bNsXHx6tBgwZWlwgAAGAJr1xkIUlBQUH629/+plmzZmnq1Kk6f/68WrVqpenTp5f7TjgAAFD71OXHmXiK1zZ4khQSEqKZM2daXQYAAECt4tUNHgAAsIE6fK+c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wIGaMWNGta/h7+9fZs8iXelb/P39q3RcZXhlg1d8c2NZUWV2dnapYwAAAMoTFhamrKwsj17juuuu008//eS2/dKlSzp//nxJOnjdddcpLy9PBQUFbkleTk6O2rdvX+lreuUii+bNmys4OLjM/yBZWVny8fFR27ZtLagMAACgtA4dOujkyZM6c+ZMqe3FC0I7depUcpxhGNq7d2+p47Kzs5WdnV1yXGV4ZYMnSX369NHWrVt16tSpkm35+fnauHGjoqKiFBgYaGF1AAAAV9x7770yDEMffPBBqe3vvfeefHx89Lvf/U6S1Lt3b9WvX1/vv/9+qeOK/9y3b99KX9Mrp2gladSoUfrkk0+UmJioMWPGyMfHR2+88YYuXryopKQkq8sDAAA2UlBQ4DZzmJubq507d0q6sso1LCxM0pVG7brrrtOqVaskSV26dFG/fv30yiuvqH79+mrfvr2+/vprrVq1Sk8++aSaNm0qSWrWrJni4uK0ZMkSBQcHKzIyUrt27dK8efM0aNAgdejQodL1OoyqvmujFtm3b5+Sk5OVkZEhwzDUtWtXJSUlqXPnzlaXBgAAbOTIkSO65557yt3/3wsx7r77bl133XVas2ZNyf6CggKlpKToww8/VHZ2tsLCwjRkyBANHz681DiGYWjJkiVas2aNjh49qtDQUA0YMEAjR44seVJIZXh1g1dVmZmZmjNnjrZv366ioiJ17txZY8eOVWRkpNWl2dbWrVuVkpKiH374QX5+fmrTpo2eeOIJ3XXXXVaXZnvffvuthg0bpttuu03Lly+3uhzbys/P17x587R+/XqdPXtWN9xwgx555BENHjzY6tJsx+Vy6d1339Xq1at14MABFRYWKjw8XEOGDFFsbKzV5dlCZmam/vjHP2r//v1av3692wN3+T3qPbz2HryqOnTokIYOHaozZ85o1qxZWrhwoYKCghQXF6cdO3ZYXZ4tbdq0SY899piCgoKUkpKi5ORk+fn5KSEhQRs2bLC6PFsrKCjQn/70pyq/DBtV43K5lJiYqLVr12rkyJF68803dcstt2jy5MlKTU21ujzbmTVrliZNmqRbbrlFKSkpev311xUREaEXXnhBb7zxhtXleb0VK1YoNjZW58+fL3M/v0e9S51J8CZOnKhPPvlEmzZtKnl/bUFBgaKjo9WyZUstXbrU2gJtqH///iooKNBHH31UEitfvHhRvXr1Unh4uFauXGlxhfb1yiuvaM2aNfqf//kfNWjQgATPQz766CONHz9er7zySqmbn4cPH66bbrpJ06ZNs7A6++nRo4fatGmj1atXl2wzDEO9e/dWYGCg243pqLyMjAzFx8dr8uTJOnbsmF577TW3BI/fo96lTiR4hmEoLS1NPXv2LPmfUrryJozo6Ght27ZNubm5FlZoP4ZhaOTIkZo6dWqpewYCAgJ000036fjx4xZWZ2979uzRm2++qfHjx5f75HSY47333lPz5s117733ltq+bNkymjsP8PX1dft/2uFwKCgoyKKK7KNx48ZavXq1HnjggTL383vU+9SJBu/o0aPKy8tTRESE276IiAi5XK6SZ9HAHA6HQzExMfr1r39danthYaEOHjyoG2+80aLK7M3lcmny5Mnq1q2b7r//fqvLsb0dO3bo1ltvlcPhsLqUOuGxxx7T119/rXXr1unixYvKz8/XqlWrlJmZ6XajOqqmbdu26tixY7n7+T3qfbz2MSlVkZOTI0llvui3eFvxMfCslJQUnT17Vg899JDVpdjSqlWrtGvXLqaqfgG5ubnKzc1V8+bNtWLFCr399tv6z3/+o9DQUD388MMaPny46tWrZ3WZtvL444+rQYMG+vOf/6xJkyZJujIrMHPmTN13330WV2dv/B71PnWiwSt+P21ZL/Atnj4sftEvPGf16tVavHixBg0apOjoaKvLsZ3jx49r9uzZSkhIUOvWra0ux/by8/MlSZ9++qluuOEGPf/88/L19dVHH32kmTNnKjs7W88884zFVdrLli1bNHPmTPXt21f33XefCgsL9d5772ny5MkKDg5WVFSU1SXaFr9HvU+daPD8/PwkqcwX+Bb/TxsQEPCL1lTXvPbaa0pJSVH//v31l7/8xepybGnq1KkKDQ3VE088YXUpdUJxOldYWKhFixaVvAT89ttv18mTJ7Vs2TLFx8eXul8J1VdQUKBJkyapW7duSk5OLtn+29/+Vvfff7+mTZumtLQ0Cyu0N36Pep86cQ9eSEiIJOn06dNu+7Kzs0sdA/NNmTJFKSkpio+PV3JysurXrxP/rvhFffrpp9q8ebOee+45FRYW6sKFC7pw4YKcTqecTqcuXLhQ8pcwzNG4cWPVq1dPnTp1Kmnuit1xxx0qKipye58kqu/AgQM6deqU7rzzTrd9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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def init_value(p):\n", " x, _, _ = p\n", " if x < 5:\n", " return (0, 0, 1)\n", " else:\n", " return (0, 0, -1)\n", "\n", "\n", "field = df.Field(mesh, nvdim=3, value=init_value)\n", "field.sel(\"z\").z.mpl()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first function computes angles between neighbouring cells in one given direction (``x``, ``y``, or ``z``). It returns a ``Field`` object. The dimensionality is reduced by one in the specified direction. Angles can be computed in radians (``units='rad'``, default) or degrees (``units='deg'``)." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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teqpp57Spk2bZLfbm1QkAAC4ila6eNhTGpTYZGVl3fAUUrdu3ZSVlXVDxwAAALiWBjU2V2tqjh8/rpKSElVXV1/1uz/72c+uexwAANBErfABfZ7UpCcPFxcX67e//a2+/vrr645t7Fs5AQAAmqpJjc2SJUt0+PBhdevWTXfffXfdux4AAEALI7Fx0qTG5ssvv9Rjjz2mpUuXurseAACAJmvySzDvvfded9YBAACagsTGSZMam8jISBUVFbm7FgAA0FgGvz3b3Zr0EsznnntOO3fu1IYNG1RVVeXumgAAAJqkSYnNnXfeqV/96ldavHixlixZok6dOtX74D6LxaKcnJwbLhIAANTPwlSUkyY1NikpKVq7dq0cDodqamrq3uwJAADgSU1qbN5//32FhIRoyZIl6tWrl7y8vNxdFwAAaAgSGydNWmNz8eJFTZkyRf3796epAQAArUaTGpvu3buroqLC3bUAAADckCY1NrNmzVJmZqZOnz7t7noAAACarElrbI4dO6ZevXrpkUce0dChQ3XHHXfUOyVlsVj0u9/97oaLBAAA9eOuKGdNamxefvllWSwWORwO7du376rjaGwAAGhmPKDPSZMam//4j/9wdx0AAAA3rEmNzZgxY9xdBwAAaAqmopw0aPHw3Llzb/jVCVVVVZo7d+4NHQMAAOBaGtTYfPDBB4qJidGBAweadJIvvvhC48eP5/UKAAC4m6MZPgbWoMbm7bff1oULF/T4448rPj5e+fn5stvt1/yO3W5XXl6epk+frgkTJujixYt6++233VI0AABAfRq0xqZXr1567733tGTJEr333nv6+9//rnbt2mnw4MHq1q2bOnXqJD8/P126dEllZWX69ttvlZeXp8uXL8vhcGj06NF64YUX1KFDh+b+ewAAuKlwu7ezBi8evvXWW/XKK69oypQpWrdunf7+979rz549dftrb/+u1alTJz3yyCOaPHmyevXq5d6qAQAA6tHou6J69+6tpUuXSpIKCgr07bff6uzZs7p48aLat2+vgIAAdevWTT179nR7sQAA4EdIbJw06XbvWj179qSBAQAArcYNNTYAAMDDSGyc0NgAAGBgLB521qS3ewMAALRGJDYAABgZL8F00qTE5ujRo+6uAwAA4IY1qbGJjo7Wk08+qe3bt8tms7m7JgAA0FC8UsFJk6ai+vfvr//+7/9WXl6eOnTooMcee0wxMTEKCQlxd30AAAAN1qTEJisrS3v27NG///u/KzAwUKtXr9avfvUrTZgwQZs3b9aVK1fcXScAAKiHxeH+j5E1+a6oO+64QwkJCdq6dau2bNmip556SqdPn9a8efP0wAMPaPHixfrqq6/cWSsAAMA1ueV27/DwcM2ZM0d79+7VmjVrFBoaqg0bNmjs2LGKjY1Vbm6uO04DAAB+jDU2Ttx2u/fp06e1detWvf/++3VJTf/+/VVcXKyEhAQ9+uij+sMf/iCr1equUwIAcNMz+tSRu91QY2O327V3715t3LhRH330kaqrq3Xrrbdq8uTJevzxxxUSEqLKykq9/vrr+s///E8FBARo3rx57qodAAB4iN1u16ZNm5SVlaXvvvtONptNISEhmjBhgmJiYurGFRQU6I9//KM+++wzVVdXq0+fPpo1a5YGDRrULHU1qbE5cuSINm7cqOzsbJWVlcnhcKhv3756/PHHNWrUKHl7e9eN9fHx0dy5c1VWVqYtW7bQ2AAA4E4eSmzS0tL0l7/8RZMmTdLs2bNVU1OjrVu3asGCBTp//rymT5+uo0ePatKkSerevbvS0tLUtm1brVmzRtOmTVNmZqb69evn9rqa1NgMGzZMFotFPj4+iomJ0YQJE3T33Xdf8zsPPPCAtm7d2qQiAQBA6/LXv/5VAwYMUHJyct22oUOH6rPPPtO2bds0ffp0LV++XDU1NVq5cqUCAgIkSREREYqOjlZ6erpWr17t9rqa1NiEh4fr8ccf169//Wu1a9euQd8ZMGCA0tLSmnI6AABwNR5KbLy8vOTr6+u0zWKxyM/PTw6HQw6HQzk5ORoyZEhdU1P7vejoaK1bt07l5eW69dZb3VpXk+6K2rJliyZMmNDgpkaSgoODNWrUqKacDgAAtDJTp07VJ598oo0bN6qyslIVFRXasGGDCgoKNGXKFJ04cUIXL15UWFiYy3fDwsJkt9tVVFTk9rp4CSYAAAbmqbuipk+fLl9fX7300kuaP3++pO/X1aakpGj06NH65z//KUny9/d3+W7ttrKyMrfXRWMDAAAaLTc3VykpKRoxYoRGjx4tm82mzZs3Kzk5Wf7+/nXTVF5eXi7frX30S3O8qYDGBgAANEpVVZXmz5+vAQMGKDU1tW77Qw89pHHjxmnx4sVKT0+XpHpfll1VVSXp+4TH3dzy5GEAAOAhHnjy8HfffaeSkhI98MADLvsGDRqkY8eOqVOnTpKks2fPuowpLS2VJAUGBjb872wgGhsAANAotVNI1dXVLvtqExqLxSJ/f38VFha6jCksLJTValWPHj3cXhuNDQAABuaJt3uHhoaqbdu2+vjjj1325efnKzAwUEFBQRo2bJj279+vkpKSuv0VFRXavXu3oqKiGnV3dUPR2AAAgEbx9fXV9OnTlZ+fr7lz5+rDDz9Ubm6ufvvb36qwsFAzZsyQxWLRjBkz5OPjo4SEBP3Xf/2XPv74Y82YMUOVlZVKSkpqltpYPAwAgJF56HbvmTNnqnPnzsrMzNSOHTtksVgUFham9PR0jRw5UpLUuXNnrV+/XqmpqUpKSpLD4VD//v21du1ahYaGNktdNDYAAKBJYmJinF54WZ+QkBCtWLGihSqisQEAwNg8lNi0VqyxAQAApkFiAwCAgXnqlQqtFY0NAABGRmPjhKkoAABgGiQ2AAAYGFNRzkyT2Hz66afq2bOnJk+e7OlSAACAh5gisamqqtKLL74oh4O2FQBwk+HS58QUic3y5ctVXl6ue+65x9OlAAAADzJ8Y1NUVKQ333xTs2fPlq+vr6fLAQCgZTma4WNghm5s7Ha7kpOTNWDAAI0bN87T5QAAAA8z9BqbDRs26NChQ9qyZYunSwEAwCO4K8qZYRubU6dO6dVXX1V8fLy6d+/u6XIAAPAMGhsnhp2KWrRokW677TY9/fTTni4FAAC0EoZMbHbt2qV9+/Zp5cqVstlsstlskqSamhpJ0uXLl2W1WuXl5eXJMgEAaH4kNk4M2djs27dPDodD8fHx9e4fOHCgZs6cqcTExBauDAAAeJIhG5uEhASNHz/eZfuSJUskSQsWLNDtt9/e0mUBANDiWDzszJCNTdeuXdW1a1eX7e3bt5ckRUZGtnBFAACgNTBkYwMAAP4/Ehsnpmps1q1b5+kSAACAB5mqsQEA4GbDGhtnNDYAABgZjY0Twz6gDwAA4MdIbAAAMDISGyckNgAAwDRIbAAAMDCLpwtoZUhsAACAaZDYAABgZKyxcUJiAwAATIPEBgAAA+MBfc5obAAAMDIaGydMRQEAANMgsQEAwMhIbJyQ2AAAANMgsQEAwMBYPOyMxAYAAJgGiQ0AAEZGYuOExAYAADRJRUWFli5dqqioKPXt21ejRo3SO++84zTm+PHjevbZZzV48GD16dNHY8eO1e7du5utJhIbAAAMzFNrbOx2uxISEnTo0CHNmTNHISEhys7OVnJysry8vDRmzBhduHBBEydOlI+PjxYtWqROnTpp06ZNmjVrll5//XVFR0e7vS4aGwAAjMxDjc327duVl5en1157TSNGjJAkDRo0SCdOnNDnn3+uMWPGaO3atTpz5oy2bt2qsLAwSVJkZKSKi4uVlpbWLI0NU1EAAKDRNm/erKCgIA0fPtxp+5o1a7R48WJJ0gcffKDw8PC6pkaSLBaLRo0apSNHjqiwsNDtddHYAABgYBaH+z8NceDAAQ0cOFAWi6Xe/dXV1frmm2+cmppatdu++uqrJv/dV0NjAwAAGqW8vFzl5eUKCgpSZmamhg0bpnvuuUcPP/yw3nrrLdXU1Ki8vFw2m03+/v4u36/ddvbsWbfXxhobAACMzANrbCoqKiRJu3bt0p133qkXXnhBXl5e2rZtm1JSUlRaWqrJkydLkry8vFy+b7VaJUlXrlxxe200NgAAoFHatGkjSbLZbFq5cqXatm0rSbrvvvt05swZrVmzRnFxcXVjfqyqqkqS5OPj4/bamIoCAMDIHM3wuY6OHTuqTZs26t27d11TU2vo0KGqrq5WYWGhvLy86p1uKi0tlSQFBgY2+s+9HhobAADQKFarVaGhofU2LTU1NZIkb29vhYWF1XvnU+223r17u702GhsAAAzMU3dFjRw5UgcPHtThw4edtufm5srHx0c9e/bU8OHDVVRUpIKCgrr9drtdW7duVc+ePdWtWzd3/hSSaGwAAEATxMbG6q677lJcXJx27NihTz75RM8//7zy8vIUFxcnX19fxcbGqkuXLkpMTNSuXbuUl5en2bNnq7i4WPPmzWuWulg8DACAkXnoycN+fn56++23lZaWpkWLFunSpUvq1q2blixZopiYGEmSr6+v1q1bp1deeUXJycmqrKxUr169tHLlSt13333NUheNDQAABmZxeO713oGBgUpJSbnmmM6dO+vVV19toYqYigIAACZCYgMAgJF5LrBplUhsAACAaZDYAABgYA29PftmQWIDAABMg8QGAAAjI7FxQmIDAABMg8QGAAADY42NMxobAACMjMbGCVNRAADANEhsAAAwMKainJHYAAAA0yCxAQDAyEhsnJDYAAAA0yCxAQDAwFhj44zEBgAAmAaJ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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "angles_x = dft.neighbouring_cell_angle(field, direction=\"x\", units=\"deg\")\n", "angles_x.sel(\"z\").mpl()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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AABgNqdPn1b//v1Vt25dzZ49W56enlq5cqWioqK0Zs0aNW3atETzrly5on79+snLy0sxMTGqWrWqNm3apHHjxmnBggV5SazVatXgwYOVnJysl19+WTVr1tSePXs0depU3bhxQy+88EKp33uxEti6desqIyOjtGPJ4+3trfDw8DI7PwAAgNm98847ysnJ0ZIlS1SlShVJUosWLRQZGal58+ZpxYoVJZq3atUqXbhwQVu3blVISIikmytRnThxQrNnz85LYLdu3aqEhAQtXbpUbdu2zTtfUlKSFixYoD59+sjT07NU771YqxCMGzdOa9as0fnz50s1GAAAANye3W5XfHy8WrVqlZeESpK7u7siIyN14MABpaWllWjeF198odDQ0LzkVbr5gH6XLl3066+/KjExMW+cn5+fnnjiiXzXeuaZZ3Tt2jXt37+/VO9dKmYF9syZMwoLC1OHDh30+OOP6/777y+wD9Zisejll18ucZAAAACuwhVWITh79qzS09PzJZe5QkJCZLPZdPToUbVs2bJY85o1a6ZffvlFHTt2LHCcJB05ckShoaFKTExUvXr1VKFChVuOe/LJJ4t9rwUpVgL71ltvyWKxyG63a8+ePbccV9wE9tKlS5o0aZK+/fZbJScnq3bt2urXr5/69+9fnHABAADuKikpKZKkgIAAh2O5+3LHFGdeWlqarFZroeNSU1Pz/rdhw4a3HVeaipXA/vWvfy3tOPJJSkpSZGSk5syZo7S0NK1fv17Tpk3TjRs3NGTIkDK9NgAAQKFc4E1cuS+SKugb8Ny1+W/cuFHseZmZmUU+f2ZmptNxlFSxEtgePXqUdhx54uLiVKlSJfn4+OTta9eunXr37q0FCxaod+/e+Y4BAADcUS7QQuDh4SHp5goAv5ebpHp5eRV7njPn9/T0dDqOkirSQ1yvvvpqiV8Zm5WVpVdfffW24/z9/R0SVIvFovbt2+vGjRs6fvx4ieIAAAAwu8DAQEkFfz2fnJycb0xx5vn5+cnd3b1I569WrZrTcZRUkRLYL774Qr169dKPP/5YrIv893//t5577rkivVbWZrMpOzvbYX9u+Tn3NwIAAABD2O/Adhs1atRQQEBA3koA/ykxMVFubm5q0KBBsedVrFhRISEhtxwn3Vy3X5IaNWqk48ePy2azFTquNBUpgX3//fd15coV9enTR8OHD9fB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u4YPH17g8YceekhjxozR2LFj73BkAAAAN5mpB/bMmTNat26doqKiNGrUKElSixYtZLPZFBMTo++++04tW7Ys0dyffvpJO3bs0NixYzV69GhJUkREhHx8fPTSSy/p888/V69evfLOe//99ys8PLxE9+VSCezIkSP13HPPOeyfPn26JOn111/Xfffdd6fDAgAA+D8mSmB37dolu92url275tvfpUsXTZs2TfHx8bdMYIs6t2rVqpoxY4ZatWqVb1xoaKikm883lTaXSmAfeOABPfDAAw77c8vOt/oDBgAAgKPExERZLBbVq1cv334/Pz8FBQXpyJEjJZ577733qkePHg7zf/nlF0lSrVq1SnobDlwqgQUAAHB5JqrApqSkyMfHp8DnhwICApSamlomc69du6bZs2crMDBQkZGR+Y59++23+uijj5SYmCibzaYWLVpo/PjxTr151RQJ7OrVq40OAQAAwGVYrVadPn260DG+vr7KzMy85cPvbm5uunLlyi3nF3duRkaGxo0bp6SkJC1btkxeXl75jv/8888aNmyYatWqpePHjysuLk4DBw7U1q1bFRwcXOg95TJFAgsAAOAqLEYHIOn8+fPq3LlzoWN69OghT0/PvFWdfi8rK6vQZbSKMzc1NVUjRoxQQkKC5s+fr8ceeyzv2L333qt9+/bJ399fbm5ukqTmzZurSZMm6t69u+bPn6/Y2NhC7ykXCSwAAIDJBAcHKzEx8bbjJk+erPT0dGVlZTlUU1NSUtSwYcNbzq1WrZpTc8+dO6dBgwbpypUreu+99xyeXapYsaICAwMdrhMaGqpatWrp0KFDt72fXC73Ji4AAACXZr8DWylp1KiR7Ha7jh07lm9/cnKykpOT1bhx41KZm5aWpmHDhikzM1Nr16695YP3WVlZBe7PzMyUh4dHUW+LBBYAAOBu1aFDB1WqVElbtmzJtz/3506dOpXK3Ndee00XLlzQ3//+d4dVC3ItXLhQTZo0cUiI//3vf+vcuXN6+OGHi3xftBAAAAA4wUwvMqhevbqioqK0fPlyBQQEKCIiQocPH9aCBQvUs2dPNWrUKG/soEGDdPLkSX311VdOzf3mm28UHx+vAQMGKCMjw6EVwNvbW3Xr1lXPnj21du1ajRgxQn/84x9Vu3ZtHTt2TIsWLVK1atU0bNiwIt8XCSwAAIAzTJTASlJ0dLT8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/v3769KlS5o9e7beffdd+fj4KCoqSj/++KPR4ZVru3fv1uDBg+Xj46O4uDjFxsbKw8NDw4cP1/bt240OD7r59dCf//xn3QW/x94VbDabRo4cqQ8//FCjRo3SsmXL1KRJE02ZMkWbN282Orxybfbs2Zo8ebKaNGmiuLg4LVq0SCEhIXr99df1t7/9zejwyo01a9aoV69eunr1aoHHyQnKD9NXYCdNmqTPP/9cu3fvVpUqVSTd/I9yZGSkHnjgAa1YscLYAMuxrl27KisrS59++mne1wfXr19Xu3btVK9ePa1du9bgCPH2229rw4YNuvfee1W5cmUqsAb79NNPNWHCBL399tv5HmYYNGiQateurWnTphkYXfnWsmVL1a9fX+vXr8/bZ7fb1aFDB3l7ezs8lILSd/DgQQ0dOlRTpkzRuXPntHDhQocKLDlB+WHqCqzdbld8fLxatWqV9xdVuvmGh8jISB04cEBpaWkGRlh+2e12jRo1SjExMfl6X7y8vFS7dm399ttvBkYHSTp69KiWLVumCRMmqHLlykaHA0kff/yxatSooY4dO+bbv3LlSpJXg7m7uzv8/8RisTjVs4eS8ff31/r16/Xcc88VeJycoHwxdQJ79uxZpaenKyQkxOFYSEiIbDabjh49akBksFgs6ty5sx599NF8+61Wq3799VfVqlXLoMgg3fyqesqUKWrevLmeffZZo8PB//rxxx/10EMPyWKxGB0Kfmfw4MH65ptvtHHjRl2/fl0ZGRlat26dEhISNGjQIKPDKxcaNGigsLCwWx4nJyhfTL2MVkpKiqSbyzj8Xu6+3DFwDXFxcbp8+bL69etndCjl2rp163T48GG+9nQhaWlpSktLU40aNbRmzRqtWrVK//M//6OgoCANGDBAgwYNUsWKFY0Os9waNmyYKleurDfeeEOTJ0+WdPMbpZkzZ6pbt24GRweJnKC8MXUCm5WVJUkOry2TlPe19Y0bN+5oTLi19evXa+nSperZs6ciIyONDqfc+u233zRnzhwNHz5cdevWNToc/K+MjAxJ0o4dO1SzZk396U9/kru7uz799FPNnDlTycnJeuWVVwyOsvzau3evZs6cqU6dOqlbt26yWq36+OOPNWXKFAUEBKhNmzZGh1jukROUL6ZOYD08PCTd/Fr693L/Int5ed3RmFCwhQsXKi4uTl27dtVf/vIXo8Mp12JiYhQUFKQRI0YYHQr+Q2511Wq1asmSJfL09JQkPfbYY7pw4YJWrlypoUOH5uvtw52RlZWlyZMnq3nz5oqNjc3b/4c//EHPPvuspk2bpvj4eAMjhEROUN6Yugc2MDBQkpSamupwLDk5Od8YGGfq1KmKi4vT0KFDFRsbq0qVTP17k6nt2LFDe/bs0WuvvSar1apr167p2rVrysnJUU5Ojq5du5b3L3rcWf7+/qpYsaIaN26cl7zmevzxx5Wdne3wnnHcGadOndLFixf1xBNPOByLiIjQmTNn+GraBZATlC+mziRq1KihgIAAh9ecSVJiYqLc3NzUoEEDAyJDrnnz5umDDz7Q5MmT9fzzzxsdTrm3Z88e2e12DR8+vMDjDz30kMaMGaOxY8fe4cjg5uam+vXrF/gf35ycnLwxuPNyv3bOzs52OJZb7eMXP+ORE5Qvpk5gJenpp5/W5s2bdfHixbzfrDIyMrRz5061adNG3t7eBkdYfsXHx+vdd9/VxIkTSV5dxMiRIwtcgmb69OmSpNdff1333XffnQ4L/6tz586aP3++jh07lu9J6r1798rLy0sNGzY0MLryq379+vL09NTXX3+tkSNH5jt28OBBBQYGqkaNGgZFh/9ETlB+mD6BHT16tD7//HONHDlSY8eOlZubm/72t7/p+vXrio6ONjq8cis7O1szZsxQcHCwHnnkER06dMhhTGhoaIHN9ig7DzzwgB544AGH/b6+vpJuLtYO4wwYMECbN2/W0KFDNWnSJPn7++uTTz7RgQMHNHbsWNbrNUjlypU1bNgwxcXF6dVXX1WXLl1kt9u1efNmJSYmaurUqSx9dgckJSXp0qVLkqQLFy5Iko4fP573AGRoaCg5QTli+jdxSdKJEycUGxurgwcPym63q1mzZoqOjlZ4eLjRoZVbSUlJat++faFjdu3apeDg4DsUEQozcOBASeJNXC7g4sWLmj17tvbu3aurV6+qTp06ev7559WrVy+jQyv3PvzwQ61Zs0a//PKLLBaLQkJCFBUVpc6dOxsdWrkwadKkQl+pnPvfFHKC8uGuSGABAABQfph6FQIAAACUPySwAAAAMBUSWAAAAJgKCSwAAABMhQQWAAAApkICCwAAAFMhgQUAAICpkMACAADAVEhgAQAAYCoksABM7eeff1bz5s318ssvl8r50tPT1aVLFz3zzDNKT08vlXMCAEoXr5IFYFpXrlxRt27d5Ovrq40bN8rDw6NUzvvLL7+oZ8+eevTRR/Xuu++WyjkBAKWHCiwA03rzzTd17tw5xcTElFryKkl169bV2LFjtWfPHn300Ueldl4AQOmgAgvAlA4fPqyePXuqdevWWr58eamfPysrS0899ZRsNpt2794td3f3Ur8GAKB4qMACuKO+++47NWrUSH379tXvf3/euHGjQkND9eqrr972PKtXr5YkDR06NN/+TZs2KTQ0VCtWrNDu3bvVvXt3NWnSRI8//rjeeustZWdn69dff9Xo0aMVERGhiIgIvfDCCzpx4kS+87i7u+u5557TxYsX9dlnn5XwrgEApYkEFsAd1bJlSw0ZMkT/+te/tHbt2rz9ycnJmjVrlu6//379+c9/LvQcdrtdX331lby9vfXwww8XOOaHH37QW2+9pe7du2vy5Mny8/PTypUrNX/+fL3wwguqXbu2XnvtNbVr107ffPONxo8f73CONm3aSJK2bdtWgjsGAJS2SkYHAKD8GTdunPbt26e5c+eqffv2qlGjhqZPn6709HS988478vHxKXR+QkKCUlJS9OSTT6pSpYL/NbZr1y7t3LlT9913nySpQYMG6tOnj5YuXaopU6aof//+kqQePXro3//+t44dO6YzZ86oZs2aeecIDw+Xn5+fvv/+e9lsNlWowO/8AOAK+LcxgDvO3d1dsbGxslqteuONN7R7925t375dw4cPV8uWLW87/+TJk5KkOnXq3HJM69at85JXSQoLC5MkVahQQc8991y+sY0aNZIkXbhwId/+ihUrqlatWrp27ZouX75cpHsDAJQ9ElgAhggJCdGECRO0Z88eTZgwQY0bN9aYMWOKNPfSpUuSpKpVq95yzP3335/v59xVCqpWreqwYkHuz9nZ2Q7nqVKliiQpNTW1SLEBAMoeCSwAw3Tv3l0eHh7KyMhQjx495ObmVqR5aWlpkiRfX99bjrnVqgHOriaQe43cawIAjEcCC8Aw06ZNU3Z2turVq6cFCxbo3LlzRZp3zz33SNIdeVNW7jVyrwkAMB4JLABDbNu2TZ9++qmGDBmiuLg43bhxQ6+88opsNttt5wYEBEiSUlJSyjrMvGvkthIAAIxHAgvgjjt//rxiYmJUr149jR07VvXq1dOYMWN08ODBIr2UIPfhrdyHucpKTk6Ozpw5I29vb/n7+5fptQAARUcCC+COstvt+tOf/qS0tDS99dZbeT2pQ4YMUePGjTV//nwdOXKk0HM0bNhQVatW1YEDBwp88Kq0HDp0SFeuXFGLFi1YQgsAXAj/RgZwR61du1b79u3TCy+8oGbNmuXtr1Spkt566y1J0sSJE5WZmXnLc1gsFrVp00bXrl3TP//5zzKL9auvvpIkde7cucyuAQBwnsX++3c5AoAJHD58WD179lTr1q2L1HbgrKysLD311FOy2WzavXu306sXAADKDhVYAKbUuHFjdevWTfv27dO//vWvUj//6tWrdf78eb300kskrwDgYqjAAjCty5cvq3v37vL19dXGjRsdXlBQXCdPnlSPHj306KOP6t133y2VcwIASg8JLABT+/nnn9W/f3899dRTio2NLfH5rl69qt69e8tisWjdunWFviwBAGAMElgAAACYCj2wAAAAMBUSWAAAAJgKCSwAAABMhQQWAAAApkICCwAAAFMhgQUAAICpkMACAADAVEhgAQAAYCr/H5V+nlHiDgfhAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "angles_y = dft.neighbouring_cell_angle(field, direction=\"y\")\n", "angles_y.sel(\"z\").mpl()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(10, 10, 10, 3)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "field.array.shape" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(10, 9, 10, 1)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "angles_y.array.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The second function returns a ``Field`` object with the same dimensions as the given field. For each cell angles to all the nearest neighbouring cells are computed and the maximum value is used. Missing cells at boundaries are treated as having angle zero, boundary conditions are not taken into account. Angles can be computed in radians or degrees." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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jQOZmZlasmSJ2rVrZzjudDqVkJCggwcPavbs2QoLC1N2draSk5Pl4+Oj0aNHS5K+//57TZgwQX5+flq4cKE6dOigjRs3aubMmXr99dcVHR3dqLoIaQAAoMXKz89XSkqKFixYoBMnTmjp0qX1ztm2bZvy8vL02muvafjw4ZKkgQMH6vjx4/r888/rQtqaNWt0+vRpbdmyRREREZKkAQMGqLi4WGlpaY0OaUx3AgAAUzll89jratq3b6+srCyNGzfuiuds2rRJISEhGjZs2GXHV69erUWLFtX9+YMPPlBkZGRdQJMkm82mkSNH6vDhwyosLGzU90JIAwAALVbXrl3VvXv3nzxn//796tevn2y2K4e+6upqffPNN5cFtFq1x7766qtG1UZIAwAApqrRDR57Xavy8nKVl5crJCREmZmZGjp0qO6880498MADeuutt1RTU1N3nsPhUGBgYL1r1B47c+ZMoz6bNWkAAABXUFFRIUnauXOnbr31Vj333HPy8fHR1q1blZKSotLSUj3zzDP65z//KUny8fGpdw273S5JunTpUqM+m5AGAABMZfbdnT+lVatWkiSHw6EVK1aodevWkqS7775bp0+f1urVqxUXFydfX9+6836sqqpKkuTn59eoz7butwIAAGCy9u3bq1WrVurRo0ddQKs1ZMgQVVdX69ChQ2rXrp18fHwMpzRLS0slScHBwY36bDppAADAVFbeFsputys8PNwwfNWuR7Pb7WrVqpUiIiIM7+CsPdajR49GfbZ1vxUAANAi1LhsHnu5w4gRI3TgwAEdOnTosuO5ubny8/NTt27dJEnDhg1TUVGRCgoK6s5xOp3asmWLunXrps6dOzfqc+mkAQCAFuvYsWM6e/asJOn06dOSpK+//rruhoHIyEjFxsYqOztbcXFxmjt3rtq3b6/33ntPeXl5SkxMlL+/vyQpNjZWGzZsUGJiombPnl33DLbi4mK9+eabja7N5nK5XG76Ob3KgzfEmF0C4FE7j39hdgktytCb+5hdAuBRHzjf9di13y3u77Frx4R99pPjc+fOVXZ29hXHd+/erdDQUJWUlCgtLU25ubm6cOGCOnfurEcffVQxMZfniVOnTunll1/WRx99pMrKSnXv3l0zZszQPffc0+jaCWlAM0VIu74IaWjummtIszKmOwEAgKmcFn4Eh5n4VgAAACyIThoAADCVO7Zvao74VgAAACyIThoAADCVu55n1twQ0gAAgKmsvOOAmfhWAAAALIhOGgAAMFUNj+AwxLcCAABgQXTSAACAqZzixgEjdNIAAAAsiE4aAAAwFWvSjPGtAAAAWBCdNAAAYCq2hTJGSAMAAKZysuOAIaIrAACABdFJAwAApmK60xjfCgAAgAXRSQMAAKZy8ggOQ3wrAAAAFkQnDQAAmKqGbaEM0UkDAACwIDppAADAVKxJM8a3AgAAYEF00gAAgKlYk2aMkAYAAEzFdKcxvhUAAAAL8tpOmtPp1MaNG5WVlaXvvvtODodDYWFhGj9+vGJiYswuDwAANFANnTRDXhvS0tLS9Oc//1kTJ07UrFmzVFNToy1btmj+/Pk6d+6cpk2bZnaJAAAATea1Ie0vf/mL+vbtq+Tk5LpjQ4YM0WeffaatW7cS0gAA8BJObhww5LX9RR8fH/n7+192zGazKSAgwKSKAAAA3MdrQ9qUKVP0ySefaMOGDaqsrFRFRYXWr1+vgoICTZ482ezyAABAA9W4bvDYy5t57XTntGnT5O/vrxdeeEHz5s2TJPn5+SklJUWjRo0yuToAAIBr47UhLTc3VykpKRo+fLhGjRolh8OhTZs2KTk5WYGBgYqKijK7RAAA0ABOF2vSjHhlSKuqqtK8efPUt29fpaam1h2///77NXbsWC1atEg5OTkmVggAABqqxntXX3mUV34r3333nUpKSnTvvffWGxs4cKCOHj2qsrIyEyoDAABwD6/spF26dEmSVF1dXW/M4XBI+qHbBgAArI/pTmNe2UkLDw9X69at9fHHH9cby8/PV3BwsEJCQkyoDAAAwD28MqT5+/tr2rRpys/P15w5c/Thhx8qNzdXTz31lAoLCzV9+nTZbKRyAAC8gVM3eOzVUAUFBRo2bJgiIyNVXFz8k+d++umn6tatmyZNmmR4nfj4ePXv31+9e/dWbGys8vPzG/2dSF463SlJM2bMUMeOHZWZmant27fLZrMpIiJC6enpGjFihNnlAQAAL5GZmaklS5aoXbt2Vz23qqpKzz//vFwuV72xI0eOaOLEierSpYvS0tLUunVrrV69WlOnTlVmZqZ69+7dqLq8NqRJUkxMDJupAwDg5WpMXJOWn5+vlJQULViwQCdOnNDSpUt/8vxly5apvLxcd955p+FYTU2NVqxYoaCgIElS//79FR0drfT0dK1atapRtXnldCcAAIA7tG/fXllZWRo3btxVzy0qKtKbb76pWbNm1dua0uVyKScnR4MHD64LaNIP21hGR0crLy9P5eXljaqNkAYAAEzldNk89rqarl27qnv37lev0elUcnKy+vbtq7Fjx9YbP378uM6fP6+IiIh6YxEREXI6nSoqKmrYF/L/efV0JwAA8H5OL9hjc/369Tp48KA2b95sOF77fNbAwMB6Y7XHGvsMV+t/KwAAACY6efKkXnnlFcXHx6tLly6G59Q+n9XHx6femN1ul/R/z3ltKDppAADAVDWy9mOzFi5cqJtuuklPPPHEFc/x9fWV9H8P1f9XtQHOz8+vUZ9LSAMAALiCnTt3au/evVqxYoUcDkddCKupqZEkXbx4UXa7XcHBwZKkM2fO1LtGaWmpJNWd01CENAAAYCorbwu1d+9euVwuxcfHG47369dPM2bMUGJiogIDA1VYWFjvnMLCQtntdnXt2rVRn01IAwAAuIKEhATDx3MsXrxYkjR//nzdfPPNkqShQ4cqOztbJSUldV2ziooK7dq1S1FRUWrTpk2jPpuQBgAATGXm3Z3Hjh3T2bNnJUmnT5+WJH399deqqKiQJEVGRqpTp0713te2bVtJ0oABA+qOTZ8+XTt27FBCQoISExNlt9u1cuVKVVZWKikpqdG1EdIAAECLtXTpUmVnZ192bObMmXX/vXv3boWGhjboWh07dtS6deuUmpqqpKQkuVwu9enTR2vWrFF4eHija7O5jDafagEevIHtpNC87Tz+hdkltChDb+5jdgmAR33gfNdj1477n8c8du03B6zy2LU9jU4aAAAwlZl7d1oZD7MFAACwIDppAADAVN6wLZQZ+FYAAAAsiE4aAAAwlZUfZmsmOmkAAAAWRCcNAACYymnxDdbNQicNAADAguikAQAAU7EmzRghDQAAmIpHcBjjWwEAALAgOmkAAMBUTHcao5MGAABgQXTSAACAqXgEhzE6aQAAABZEJw0AAJiKNWnG6KQBAABYEJ00AABgKjppxghpAADAVIQ0Y0x3AgAAWBCdNAAAYCo6acbopAEAAFgQnTQAAGAqHmZrjE4aAACABdFJAwAApmJNmjE6aQAAABZEJw0AAJiKTpoxQhoAADAVIc0Y050AAAAWRCcNAACYik6aMTppAAAAFkQnDQAAmMpFJ80QnTQAAAALopMGAABMxbZQxuikAQAAWBCdNAAAYCru7jRGSAMAAKbixgFjTHcCAIAWr6CgQMOGDVNkZKSKi4vrje/bt0/jx49X7969NXDgQE2YMEG5ubmG14mPj1f//v3Vu3dvxcbGKj8/v0k1EdIAAICpnC6bx14NkZmZqZiYGF24cMFwfM+ePZoyZYoCAgKUkZGh1NRU+fr6Kj4+Xtu3b68778iRI5o4caLOnj2rtLQ0LV++XAEBAZo6dar279/f6O+F6U4AANBi5efnKyUlRQsWLNCJEye0dOnSeuekp6erU6dOWrZsmex2uyRp4MCBuu+++7R27VoNHz5ckrRs2TLV1NRoxYoVCgoKkiT1799f0dHRSk9P16pVqxpVGyENAACYysw1ae3bt1dWVpa6d++ujIyMeuMul0tPPvmkgoKC6gKaJPn5+en222/XyZMn687LycnR4MGD6wKaJPn4+Cg6Olpr165VeXm5brzxxgbXRkgDAAAtVteuXX9y3GazacSIEfWOOxwOHT58WHfccYck6fjx4zp//rwiIiLqnRsRESGn06mioiINGDCgwbUR0gAAgKm88REcGRkZOnfunCZMmCBJKisrkyQFBgbWO7f2WO05DcWNAwAAAI2QlZWlN954Q2PGjFF0dLQkqaqqStIP05s/VjtNeunSpUZ9Dp00AABgKpfL7AoabunSpcrIyNBDDz2kF198se64r6+vpB+mQX+sNsD5+fk16rMIaQAAAA2wYMECZWVlKS4uTrNnz5bN9n/TtMHBwZKkM2fO1HtfaWnpZec0FCENAACYyhs2WE9PT9c777yjefPm6dFHH603HhISosDAQBUWFtYbKywslN1uv+pNCj/GmjQAAGAql8vmsZc75OTkaPny5Zo1a5ZhQKs1dOhQ7du3TyUlJXXHKioqtGvXLkVFRalNmzaN+lw6aQAAoMU6duyYzp49K0k6ffq0JOnrr79WRUWFJCkyMlJLlixRaGioBg0apAMHDtS7RmRkpHx8fDR9+nTt2LFDCQkJSkxMlN1u18qVK1VZWamkpKRG10ZIAwAApjLzERxLly5Vdnb2ZcdmzpxZ99+7d+/W0aNHJUkxMTGG19i9e7dCQ0PVsWNHrVu3TqmpqUpKSpLL5VKfPn20Zs0ahYeHN7o2m8vlTfdUuM+DNxh/0UBzsfP4F2aX0KIMvbmP2SUAHvWB812PXbvP+8977NpfjHzx6idZFJ00AABgqpbZLro6bhwAAACwIDppAADAVGZusG5ldNIAAAAsiE4aAAAwFZ00Y4Q0AABgKjMfwWFlTHcCAABYEJ00AABgKh7BYYxOGgAAgAXRSQMAAKbixgFjdNIAAAAsiE4aAAAwFZ00Y3TSAAAALIhOGgAAMBU3dxojpAEAAFMx3WmM6U4AAAALopMGAADMxXynIa/upFVUVGjJkiWKiopSr169NHLkSL3zzjtmlwUAAHDNvLaT5nQ6lZCQoIMHD2r27NkKCwtTdna2kpOT5ePjo9GjR5tdIgAAaADWpBnz2pC2bds25eXl6bXXXtPw4cMlSQMHDtTx48f1+eefE9IAAIBX89qQtmnTJoWEhGjYsGGXHV+9erVJFQEAgKZgg3VjXrsmbf/+/erXr59sNlqkAACg+fHKkFZeXq7y8nKFhIQoMzNTQ4cO1Z133qkHHnhAb731lmpqaswuEQAANJDLZfPYy5t55XRnRUWFJGnnzp269dZb9dxzz8nHx0dbt25VSkqKSktL9cwzz5hcJQAAaBAvD1Oe4pUhrVWrVpIkh8OhFStWqHXr1pKku+++W6dPn9bq1asVFxenoKAgM8sEAABoMq+c7mzfvr1atWqlHj161AW0WkOGDFF1dbUOHTpkUnUAAKAxXC7PvbyZV4Y0u92u8PBwnTlzpt5Y7Xo0u91+vcsCAABwG68MaZI0YsQIHThwoF7HLDc3V35+furWrZtJlQEAgEZxefDlxbw2pMXGxuq2225TXFyctm/frk8++UTPPvus8vLyFBcXJ39/f7NLBAAAaDKvvHFAkgICAvT2228rLS1NCxcu1IULF9S5c2ctXrxYMTExZpcHAAAayNsfleEpXhvSJCk4OFgpKSlmlwEAAOB2Xh3SAABAM+Dla8c8hZAGAABMxXSnMa+9cQAAAKA5o5MGAADMxXSnITppAAAAFkQnDQAAmIw1aUbopAEAgBavoKBAw4YNU2RkpIqLiw3H4+Pj1b9/f/Xu3VuxsbHKz8+vd96xY8f09NNPa9CgQerZs6fGjBmjXbt2NakmQhoAADCXydtCZWZmKiYmRhcuXDAcP3LkiCZOnKizZ88qLS1Ny5cvV0BAgKZOnar9+/fXnff9999rwoQJ+vLLL7Vw4UK99dZbioyM1MyZM5sU1JjuBAAALVZ+fr5SUlK0YMECnThxQkuXLq13zrJly1RTU6MVK1YoKChIktS/f39FR0crPT1dq1atkiStWbNGp0+f1pYtWxQRESFJGjBggIqLi5WWlqbo6OhG1UYnDQAAmMvETlr79u2VlZWlcePGGZfmciknJ0eDBw+uC2iS5OPjo+joaOXl5am8vFyS9MEHHygyMrIuoEmSzWbTyJEjdfjwYRUWFjb0G5FESAMAAGZz2Tz3uoquXbuqe/fuVxw/fvy4zp8/f1nwqhURESGn06mioiJVV1frm2++ueJ5kvTVV1814kshpAEAAFxRWVmZJCkwMLDeWO2xsrIylZeXy+Fw/OR5Z86cadRnsyYNAACYymXhh9lWVVVJ+mF688fsdrsk6dKlS/rnP//ZoPMag04aAADAFfj6+kqSHA5HvbHaAOfn59fg8xqDThoAADCXhTtpwcHBkoynKktLS+vOadeunXx8fK56XmPQSQMAALiCkJAQBQYGGt6ZWVhYKLvdrq5du6pVq1aKiIi44nmS1KNHj0Z99jWHtLNnz6q4uFhffPGFiouLdfbs2Wu9JAAAaElMvLuzIYYOHap9+/appKSk7lhFRYV27dqlqKgotWnTRpI0bNgwFRUVqaCgoO48p9OpLVu2qFu3burcuXOjPrfR050Oh0Pvv/++tm/frs8++0wXL16sd06bNm00YMAADR8+XCNGjKhbMAcAAGAlx44dq2swnT59WpL09ddfq6KiQpIUGRmp6dOna8eOHUpISFBiYqLsdrtWrlypyspKJSUl1V0rNjZWGzZsUGJiombPnl33DLbi4mK9+eabja7N5nI1/J6K7OxsvfrqqyotLZXL5VK7du102223KSgoSG3bttX58+dVVlamo0eP6vvvv5fNZtO//du/adasWXr44YcbXZwnPXhDjNklAB618/gXZpfQogy9uY/ZJQAe9YHzXY9du9PKVI9d+7tpv//J8blz5yo7O/uK47t371ZoaKiKi4uVmpqq/Px8uVwu9enTR0lJSerZs+dl5586dUovv/yyPvroI1VWVqp79+6aMWOG7rnnnkbX3qCQduHCBf3+97/X3r171bFjR40bN05RUVHq2bOnbrih/oyp0+nUgQMHlJubq7/+9a86ffq07r//fr388ssKCAhodJGeQEhDc0dIu74IaWjuPBrS3vBgSIv/6ZBmZQ2a7hw/fryOHTum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LkIaAABosVwul5588kkFBQXVBTRJ8vPz0+23366TJ0/K5XIpJydHgwcPrgtokuTj46Po6GitXbtW5eXluvHGG91aGyENAACYy8ROms1m04gRI+oddzgcOnz4sO644w4dP35c58+fV0RERL3zIiIi5HQ6VVRUpAEDBri1NtakAQAA/EhGRobOnTunCRMmqKysTJIUGBhY77zaY7XnuBMhDQAAmMvp8tyrCbKysvTGG29ozJgxio6OVlVVlaQfpjd/rHaK9NKlS03/+a+A6U4AAID/b+nSpcrIyNBDDz2kF198UZLk6+sr6Ycp0B+rDXB+fn5ur4WQBgAAzGWRh9kuWLBAWVlZiouL0+zZs2Wz2SRJwcHBkqQzZ87Ue09paell57gTIQ0AALR46enpeueddzRv3jw9+uijl42FhIQoMDBQhYWF9d5XWFgou92url27ur0m1qQBAABzuVyeezVATk6Oli9frlmzZtULaLWGDh2qffv2qaSkpO5YRUWFdu3apaioKLVp08YtX8W/opMGAADMZeJ0Z3V1tZYsWaLQ0FANGjRIBw4cqHdOZGSkpk+frh07dighIUGJiYmy2+1auXKlKisrlZSU5JHaCGkAAKDFOnnypI4ePSpJiomJMTxn9+7dCg0N1bp165SamqqkpCS5XC716dNHa9asUXh4uEdqI6QBAABzNfFRGe4QGhpquNbMSFhYmJYvX+7hiv4Pa9IAAAAsiE4aAAAwl8tpdgWWRCcNAADAguikAQAAc1nkYbZWQycNAADAguikAQAAc5l4d6eVEdIAAIC5mO40xHQnAACABdFJAwAA5qKTZohOGgAAgAXRSQMAAOaik2aIThoAAIAF0UkDAADmcrItlBE6aQAAABZEJw0AAJiLNWmGCGkAAMBchDRDTHcCAABYEJ00AABgLvbuNEQnDQAAwILopAEAAFO5XDyCwwidNAAAAAuikwYAAMzFmjRDdNIAAAAsiE4aAAAwF89JM0RIAwAA5mLvTkNMdwIAAFgQnTQAAGAupjsN0UkDAACwIDppAADAVC7WpBmikwYAAGBBdNIAAIC5WJNmiE4aAACABdFJAwAA5mJbKEOENAAAYC4XNw4YYboTAADAguikAQAAU7mY7jREJw0AAMCCvDqkFRQUKD4+Xv3791fv3r0VGxur/Px8s8sCAACN4XJ67tVAVswUXhvSjhw5ookTJ+rs2bNKS0vT8uXLFRAQoKlTp2r//v1mlwcAALyEVTOF165JW7ZsmWpqarRixQoFBQVJkvr376/o6Gilp6dr1apV5hYIAAAaxOw1aVbNFF7ZSXO5XMrJydHgwYPrvkxJ8vHxUXR0tPLy8lReXm5ihQAAwBtYOVN4ZUg7fvy4zp8/r4iIiHpjERERcjqdKioqMqEyAADQaCauSbNypvDK6c6ysjJJUmBgYL2x2mO151zJulNvub8wwEJ++v8BcLd1p8yuAEBTuCNTeIpXhrSqqipJP7Qif8xut0uSLl269JPXCA5u6/7CAABAo33gfNe0z3ZHpvAUr5zu9PX1lSQ5HI56Y7Vftp+f33WtCQAAeB8rZwqvDGnBwcGSpDNnztQbKy0tvewcAACAK7FypvDKkBYSEqLAwEAVFhbWGyssLJTdblfXrl1NqAwAAHgTK2cKrwxpkjR06FDt27dPJSUldccqKiq0a9cuRUVFqU2bNiZWBwAAvIVVM4XN5XJ55a6mp06d0m9/+1uFhoYqMTFRdrtdK1eu1P79+/Xuu+8qPDzc7BIBAIAXsGqm8NqQJknFxcVKTU1Vfn6+XC6X+vTpo6SkJPXs2dPs0gAAgBexYqbw6pDWWAUFBXr11Vf12Wefqbq6Wj179tTMmTM1cOBAs0trtvbt26eMjAx9+eWX8vX1VXh4uJ544gn98pe/NLu0Zu/TTz/VpEmT9Itf/EJr1641u5xmq6KiQq+//rq2bdumc+fO6dZbb9Wjjz6q3/3ud2aX1uw4nU5t3LhRWVlZ+u677+RwOBQWFqbx48crJibG7PKahYKCAj311FP69ttvtW3bNoWFhdUb5/fo9eO1a9Iay6qbpzZne/bs0ZQpUxQQEKCMjAylpqbK19dX8fHx2r59u9nlNWtVVVV6/vnn1YL+DWYKp9OphIQEvfvuu3ryySf15ptvqlevXkpOTlZ2drbZ5TU7aWlpmjdvnnr16qWMjAz96U9/UkREhObPn6+VK1eaXZ7Xy8zMVExMjC5cuGA4zu/R66/FdNLmzp2rHTt2aM+ePXV7c1VVVSk6OlqdOnViQ3YPeOihh1RVVaWtW7fWPRCwsrJS9913n8LCwrRu3TqTK2y+XnvtNf3lL3/Rz3/+c/n7+9NJ85CtW7dq1qxZeu211zR8+PC645MnT9btt9+uRYsWmVhd8zNgwACFh4crKyur7pjL5dKDDz6oNm3aaPPmzSZW593y8/MVFxen5ORknThxQkuXLq3XSeP36PXXIjppVt48tblyuVx68skntXDhwrqAJv3wQMDbb79dJ0+eNLG65q2oqEhvvvmmZs2aJX9/f7PLadY2bdqkkJAQDRs27LLjq1evJqB5gI+PT73/TdtsNgUEBJhUUfPRvn17ZWVlady4cYbj/B41R4sIaVbePLW5stlsGjFihO66667LjjscDh0+fFi33XabSZU1b06nU8nJyerbt6/Gjh1rdjnN3v79+9WvXz/ZbDazS2kRpkyZok8++UQbNmxQZWWlKioqtH79ehUUFGjy5Mlml+fVunbtqu7du19xnN+j5vDKvTsby8qbp7Y0GRkZOnfunCZMmGB2Kc3S+vXrdfDgQaZ9roPy8nKVl5crJCREmZmZWrNmjf73f/9XN910k2JjYzV58mS1atXK7DKblWnTpsnf318vvPCC5s2bJ+mH7nxKSopGjRplcnXNG79HzdEiQpqVN09tSbKysvTGG29ozJgxio6ONrucZufkyZN65ZVXFB8fry5duphdTrNXUVEhSdq5c6duvfVWPffcc/Lx8dHWrVuVkpKi0tJSPfPMMyZX2bzk5uYqJSVFw4cP16hRo+RwOLRp0yYlJycrMDBQUVFRZpfYbPF71BwtIqRZefPUlmLp0qXKyMjQQw89pBdffNHscpqlhQsX6qabbtITTzxhdiktQm2XzOFwaMWKFWrdurUk6e6779bp06e1evVqxcXFXbZ+B01XVVWlefPmqW/fvkpNTa07fv/992vs2LFatGiRcnJyTKyweeP3qDlaxJo0K2+e2hIsWLBAGRkZiouLU2pqqn72sxbxb4PraufOndq7d6+effZZORwOXbx4URcvXlRNTY1qamp08eLFur9I4R7t27dXq1at1KNHj7qAVmvIkCGqrq7WoUOHTKqu+fnuu+9UUlKie++9t97YwIEDdfToUabbPIjfo+ZoEb8trbx5anOXnp6ud955R/PmzdOjjz5qdjnN1t69e+VyuRQfH2843q9fP82YMUOJiYnXubLmy263Kzw83PCXVk1NTd05cI/aqbTq6up6Y7XdHf4h4jn8HjVHiwhp0g+bp2ZnZ6ukpKQu7Vth89TmLCcnR8uXL9fs2bMJaB6WkJBgeOv84sWLJUnz58/XzTfffL3LavZGjBihP/7xjzp06NBld73l5ubKz89P3bp1M7G65iU8PFytW7fWxx9/rISEhMvG8vPzFRwcrJCQEJOqaxn4PXr9tZiQNn36dO3YsUMJCQmXbZ5aWVmppKQks8trdqqrq7VkyRKFhoZq0KBBOnDgQL1zIiMjDRehovE6deqkTp061Tvetm1bST88BBTuFxsbq+zsbMXFxWnu3Llq37693nvvPeXl5SkxMZHn1LmRv7+/pk2bpoyMDM2ZM0cjR46Uy+VSdna2CgsLtWDBAh6Fcg2OHTums2fPSpJOnz4tSfr666/rbpCJjIzk96gJWsyOA5I1N09tro4dO6Zf/epXP3nO7t27FRoaep0qapkmTZokSew44EElJSVKS0tTbm6uLly4oM6dO+vRRx9lL0kPeffdd5WZmalvvvlGNptNERERmjp1qkaMGGF2aV5t7ty5P7mVWe3f1/wevb5aVEgDAADwFi3i7k4AAABvQ0gDAACwIEIaAACABRHSAAAALIiQBgAAYEGENAAAAAsipAEAAFgQIQ0AAMCCCGkAAAAWREgDYKovv/xSffv21e9//3u3XO/8+fMaOXKkfvOb3+j8+fNuuSYAmIFtoQCY5vvvv9eoUaPUtm1bbdiwQb6+vm657jfffKMxY8borrvu0vLly91yTQC43uikATDNH/7wB504cUILFy50W0CTpC5duigxMVF79+7VX//6V7ddFwCuJzppAExx8OBBjRkzRvfcc4/+/Oc/u/36VVVV+vWvfy2n06k9e/bIx8fH7Z8BAJ5EJw1Ao/zP//yP7rjjDo0fP14//jfehg0bFBkZqTlz5lz1OmvXrpUkxcXFXXZ848aNioyM1KpVq7Rnzx49/PDD6tWrl4YMGaKXXnpJ1dXVOnz4sKZPn66BAwdq4MCBeuyxx1RcXHzZdXx8fDRu3DiVlJTo/fffv8afGgCuP0IagEYZMGCAHn/8cf3973/XunXr6o6Xlpbq5Zdf1i233KLnn3/+J6/hcrn04Ycfqk2bNvrFL35heM7nn3+ul156SQ8//LDmzZundu3aafXq1frjH/+oxx57TLfffrueffZZ3Xffffrkk0/07//+7/WuERUVJUnatm3bNfzEAGCOn5ldAADvM3PmTH300Ud69dVX9atf/UohISFavHixzp8/r2XLlikgIOAn319QUKCysjI98MAD+tnPjP8a2r17t3bt2qWbb75ZktS1a1c98sgjeuONN5ScnKyJEydKkkaPHq1//OMfOnTokI4ePapbb7217ho9e/ZUu3bt9Nlnn8npdOqGG/h3KQDvwd9YABrNx8dHqampcjgceuGFF7Rnzx5t375d8fHxGjBgwFXf/+2330qSOnfufMVz7rnnnrqAJkndu3eXJN1www0aN27cZefecccdkqTTp09fdrxVq1a67bbbdPHiRZ07d65BPxsAWAUhDUCTREREaNasWdq7d69mzZqlHj16aMaMGQ1679mzZyVJHTp0uOI5t9xyy2V/rr37s0OHDvXuBK39c3V1db3rBAUFSZLOnDnToNoAwCoIaQCa7OGHH5avr68qKio0evRo2e32Br2vvLxcktS2bdsrnnOluzEbe5dm7WfUfiYAeAtCGoAmW7RokaqrqxUWFqbXX39dJ06caND7brzxRkm6LjsC1H5G7WcCgLcgpAFokm3btmnr1q16/PHHlZGRoUuXLumZZ56R0+m86nsDAwMlSWVlZZ4us+4zaqc9AcBbENIANNqpU6e0cOFChYWFKTExUWFhYZoxY4by8/Mb9GDa2hsGam8g8JSamhodPXpUbdq0Ufv27T36WQDgboQ0AI3icrn03HPPqby8XC+99FLdGrHHH39cPXr00B//+Ed99dVXP3mNbt26qUOHDsrLyzNc7O8uBw4c0Pfff6/+/fvz+A0AXoe/tQA0yrp16/TRRx/pscceU58+feqO/+xnP9NLL70kSZo9e7b++c9/XvEaNptNUVFRunjxoj799FOP1frhhx9KkkaMGOGxzwAAT2HvTgCmYO9OAPhpdNIAmKJHjx4aNWqUPvroI/397393+/XXrl2rU6dO6emnnyagAfBKdNIAmObcuXN6+OGH1bZtW23YsKHeQ2qb6ttvv9Xo0aN11113afny5W65JgBcb4Q0AKb68ssvNXHiRP36179WamrqNV/vwoUL+t3vfiebzab169f/5ANzAcDKCGkAAAAWxJo0AAAACyKkAQAAWBAhDQAAwIIIaQAAABZESAMAALAgQhoAAIAFEdIAAAAsiJAGAABgQf8PIYnxYbvaqgEAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "angle_max = dft.max_neighbouring_cell_angle(field, units=\"deg\")\n", "angle_max.sel(\"z\").mpl()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(10, 10, 10, 1)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "angle_max.array.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The third function related to cell angles can be used to compute the number of regions where cell angles are above a certain threashold ``min_angle``. In this context a region is a number of connected cells, all having neighbouring cell angles above the given threashold. Similar to the functions described above, it is possible to either specify a geometric ``direction`` or use the maximum of all directions (``direction=None``, default). ``min_angle`` can be in radians (``units='rad'``, default) or degrees (``units='deg'``).\n", "\n", "Cell angles in ``y`` direction are all zero:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dft.count_large_cell_angle_regions(field, min_angle=1, direction=\"y\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using the maximum of all angles, there is one region between ``x=4`` and ``x=6`` with cell angles of 180°." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dft.count_large_cell_angle_regions(field, min_angle=90, units=\"deg\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Emergent magnetic field and counting of BPs\n", "TODO" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. Demag tensor\n", "TODO" ] } ], "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.10.12" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }