{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Analysing simulation results: Domain wall pair conversion\n", "\n", "## Simulation\n", "### Problem description\n", "\n", "We want to simulate a domain wall conversion in a two-dimensional thin film sample with:\n", "\n", "- exchange energy constant $A = 15 \\,\\text{pJ}\\,\\text{m}^{-1}$,\n", "- Dzyaloshinskii-Moriya energy constant $D = 3 \\,\\text{mJ}\\,\\text{m}^{-2}$,\n", "- uniaxial anisotropy constant $K = 0.5 \\,\\text{MJ}\\,\\text{m}^{-3}$ with $\\hat{\\mathbf{u}} = (0, 0, 1)$ in the out of plane direction,\n", "- gyrotropic ratio $\\gamma = 2.211 \\times 10^{5} \\,\\text{m}\\,\\text{A}^{-1}\\,\\text{s}^{-1}$, and\n", "- Gilbert damping $\\alpha=0.3$.\n", "\n", "Please carry out the following steps:\n", "\n", "1. Create the following geometry with discretisation cell size $(2 \\,\\text{nm}, 2 \\,\\text{nm}, 2 \\,\\text{nm})$.\n", " \n", " \n", "\n", "2. Initialise the magnetisation so that when relaxes, a domain pair is present in the narrower part of the geometry.\n", "\n", "3. Relax the system. Is a domain wall pair contained in the constrained part?\n", "\n", "4. Apply the spin polarised current in the positive $x$ direction with velocity $\\mathbf{u} = (400, 0, 0) \\,\\text{m}\\,\\text{s}^{-1}$, with $\\beta=0.5$.\n", "\n", "5. Evolve the system over $0.2 \\,\\text{ns}$. What did you get? [1]\n", "\n", "### References\n", "\n", "[1] Zhou, Y., & Ezawa, M. (2014). A reversible conversion between a skyrmion and a domain-wall pair in a junction geometry. *Nature Communications* **5**, 8. https://doi.org/10.1038/ncomms5652\n", "\n", "\n", "### Solution" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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0YK6detWdG52mjVrBsCFCxcAyMvLY/v27YSFhVkLCABvb2+ioqJ46623yMzMpHPnzjc8NxERERF3YtZwJrdWriLim2++oVWrVqxYsYJatW7ctIqCggJyc3MxmUz85z//ISYmBoDevXsDcODAAUwmEyEhIXbnWtpURIiIiIhUPA1ncm/lqgA8PT254447bmgBAZCcnMz8+fOtXzdr1ozXX3+d7t27A5CTkwOAv7+/3bmWNqPReENzFBEREXFHmljt3spVBYSGhnLs2LGKzsXOfffdR5s2bcjLy2Pfvn1s376ds2fPWo/n5+cDV4ua36pdu7ZNjIiIiIhUID2JcGvlKiJmzJjBuHHjWLduHdHR0RWdk1VAQAABAQHA1YLi/vvvJyoqisuXLzN9+nS8vLwAHK4MVVBQAGCNEREREZGK8ztr60g1V64i4o477uAf//gHTz31FKmpqdx11134+/tTo0YNh/FDhw69nhyt2rdvT8eOHXn//feZPn26db8IR0OWLG2OhjqJiIiIyPXRxGr3Vu5JDV9//TVnzpwhOzub77//3mGM2WzGYDBUWBEBcPnyZc6fPw9AYGAgnp6eZGRk2MVZ2oKDgyvs3iIiIiLy/+hJhFsrVxGxYsUKlixZgqenJ/3796d58+Z4e3tXWFKnTp2icePGdu3ffvsthw4dIiwsDLi6lGvfvn357LPP2L9/P+3btwcgNzeXlJQUWrdurZWZRERERG4Arc7k3spVRKxZswYfHx/WrVtHmzZtKjon/va3v3Hq1Cl69OhB06ZNKSgoYO/evXzyySd4e3vz7LPPWmPnzJnDt99+y5QpU5g0aRLe3t4kJydjNBpZunSpNpoTERERuRFURLi1chUR//3vfwkPD78hBQTAwIED2bBhAxs2bODMmTMYDAaaNm3KqFGjePjhh2natKk1tlWrVqxZs4aYmBiWLVtGYWEhHTt2ZMWKFYSHh9+Q/ERERETcnoYzubVyFREtW7bEfAOn5EdGRhIZGVnm+LZt2xIfH3/D8hERERGR31AR4dYcL6f0O0aPHs13333H8ePHKzofEREREbkJmIsNLn1J1VKuImLs2LFER0czduxY1q9fr12hRURERNyN2cUvqVLKNZypQ4cOwNUlXJ977rlSYw0GA/v27SvPbURERESkijLo6YBbK1cR0aRJk4rOQ0RERERuJno64NbKVURs3769ovMQERERkZuJlnh1a+XesVpERERE3FhxZSdgr7i4mJUrV7J27Vqys7Np0KABERERzJw5k7p161Z2etWKiggRERERcV4VHM60cOFCVq1aRf/+/ZkyZQqHDx9m1apV7Nu3j4SEBGrUKNeaQuLAdRURv/zyC99//z05OTmYTCaHMQaDgccff/x6biMiIiIiVU0VG8506NAhkpKSuP/++4mLi7O2N2/enAULFvDxxx8zePDgSsyweilXEWEymXj++efZuHEjQKkbz6mIEBEREal+DFVsONOmTZswm81MnDjRpj06OprFixeTmpqqIqIClauIeOutt0hNTaV+/foMGTKE1q1b4+3tXdG5iYiIiIiUyY8//kiNGjXo3LmzTXvt2rVp3749mZmZlZRZ9VSuImLTpk3Ur1+ff/7znzRr1qyicxIRERGRKs5QxeZE5OTk4Ovri6enp90xf39/0tPTMZlMDo+L88pVRJw+fZq7775bBYSIiIiIu6pim83l5+eXWCDUrl0bgMuXL6uIqCDlmqLetGnTis5DRERERG4mZhe/foeXl1eJC/0UFBQAUKdOHaffpjhWriJixIgRpKWlcebMmYrOR0RERERuAoZi175+j5+fH2fPnnVYSBiNxhKHOkn5lKuImDp1Kr169WLChAl8++23pa7OJCIiIiLVUBV7EhEcHExxcTF79uyxaS8oKGD//v0EBwdfz7uV3yjXnIj+/fsDcOLECSZPnkytWrVo3LgxBoP92DiDwcDnn39+fVmKiIiISJVS1SZWR0ZGsnTpUhITE+nevbu1fd26deTn52t51wpWriIiOzvb5uvCwkJOnDhRIQmJiIiIyE2gik2sDgoKYuzYsSQlJfHEE0/Qu3dv647VYWFhKiIqWLmKiP3791d0HiIiIiJyE6lqTyIA/vKXv9CsWTM++OADvvjiC3x9fRk3bhwzZ86kRo1yjeKXEpSriBARERERN1cFi4iaNWsyZcoUpkyZUtmpVHsqIkRERETEaWVZMUmqrzI91zl06FCF3KyiriMiIiIilayKrc4krlWmImLIkCE8+eST5Z4LsW/fPmbNmsWDDz5YrvNFREREpGoxmF37kqqlTMOZHn/8cd599102b95MYGAgAwcOJCwsjI4dOzrctKOgoIB9+/aRlpbGpk2b+M9//oOXlxePP/54hb8BEREREakE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eOWVVwgLC+O5557j5MmTJCQkkJGRQXJyMnXr1rXGZmRkMH78ePz9/Zk1axYASUlJPPTQQ6xdu5agoKBy5/x7VESIiIiIiPOq2ZMIgEaNGvHggw/+btyyZcs4fvw48fHx9OvXD4CoqChGjRrFa6+9xoABA/D29gZg586dbNu2jcmTJ/Pss88CMHLkSOrXr897771HdHQ0Xbt2BeDMmTPExsbSqVMnEhISqFmzJgCdOnXiscceY+XKlTZFzoIFC/Dw8GD16tX4+/sDEBERQUREBK+++irvvvtuuXIuixpljhQRERERsTCbXftykStXrnDp0qVSYzZt2kTLli2tH8YBatasybhx4zh37hw7d+60tm/cuBGAiRMn2lzD8nVqaqq1bdu2beTn5zNu3DhrAQFXh1q1aNHCJvbYsWNkZmYyYMAAawEB4O/vz4ABA/j66685depUuXIuCxURIiIiIuK84mLXvlxg9+7dhISE0K1bN7p3784zzzyD0Wi0icnJycFoNNKlSxe780NCQgDIzMy0tmVmZuLv70+TJk1sYps0aYKfn59dLEBoaKjdtbt06cKRI0fIzc393diQkBDMZjN79+4tV85loeFMIiIiIuK8arbEa7t27YiKiqJt27ZcuXKF7777jpSUFL755huSk5Otv+3PyckBsPntv8VvYyx/bteuncN7+vv7c/LkSZvY0q5tNpvJycnhtttus8b6+fmVmIelAHI257JQESEiIiIizquCRcSFCxdITEwsc/z48eO59dZbgatzBq41cOBA7rzzTubOnUtcXBwLFiwA4PLlywB4enraXa927doA5OfnW9suX77sMNYSb7neteeVdm1LfGmxljZLjLM5l4WKCBERERFxXhWcWH3hwgWWLFlS5vghQ4ZYiwhHBg8ezBtvvMEXX3xhbatTpw5wddnW3yooKADAy8vLJt5RrCXecr1rzzOZTDbt117b0n5t7G9Z2iwxzuZcFioiRERERMRpZnPVexLRvHlzDhw4UKHXbNasGenp6davLcOHfjtX4tq2a4cY+fn5OYy1xF87xOjaa7dq1cou1mAwWGMs/3U0DMlyP8u1nc25LDSxWkREREScV1Ts2lclycrKomHDhtav/fz88Pf3Z/fu3XaxGRkZwNUlWS06deqE0Wjk119/tYn99ddfycnJITg42CYWsClaLHbv3s1tt91m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MTExfPnll+Tl5dGuXTumTZtm3WjzZlPWvvruu++YMGFCqdfatm0bzZs3t35dUFDA22+/zcaNG8nJycHf35/hw4fzyCOPlLrARFXl7PeVo/NLKiKqW1+JOOK2RYSIiIiIiJSPe43ZERERERGR66YiQkREREREnKIiQkREREREnKIiQkREREREnKIiQkREREREnKIiQkREREREnKIiQkREREREnKIiQkREREREnKIiQkSknJYsWUL79u05cOBAZadi5+WXX6Zz586cOHGislMREZFqSEWEiEg5/Pe//+Uf//gHDzzwAEFBQZWdjp1p06YBEBsbW7mJiIhItaQiQkSkHN555x3y8vKYPn16ZafikJ+fH0OHDiU1NZX//Oc/lZ2OiIhUMyoiRESclJ+fz0cffURgYCAdO3as7HRKNGTIEMxmM2vXrq3sVEREpJpRESEi1d7s2bMJCgritddeszv2888/ExoaSmhoKEePHi3T9bZs2cLFixcZOHCgw+NBQUH069ePoqIili1bxgMPPEBwcDC9e/fm9ddfx2Qy2Z3Tr18/67Co1atXM2jQIDp37ky/fv1Yvnw5ZrMZgL179/Loo48SFhZGaGgojz32GNnZ2Q7z6NatG02bNiU1NZWCgoIyvTcREZGyUBEhItXevHnzCAgI4L333uPbb7+1thcWFjJ37lzy8vL4y1/+QuvWrct0vR07dgAQFhZWatycOXOIj4/ntttu4+677yY3N5cVK1bwl7/8pcRzFi5cyGuvvUbTpk0JDw/n3LlzxMTEEBcXx/fff8/YsWPJyckhPDycxo0bs337diZNmsTly5ftrmUwGLjzzjs5f/48P/zwQ5nem4iISFmoiBCRau+WW27h1VdfBeCZZ57h/PnzwNXVlX788Ufuu+8+Ro4cWebrff/999SqVavUoUzZ2dkcPHiQrVu38s477/DOO+/wz3/+k/r167Nx40aysrIcnrd582Y2btzIsmXLeOedd0hOTsbT05N3332Xp556imeeeYb169cTGxvLpk2b6NGjB1lZWXz88ccOr9e5c2cAdu3aVeb3JyIi8ntURIiIW+jRoweTJ0/m5MmT/PWvf+Xf//43y5Yto3HjxsyfP7/M1zl9+jT//e9/CQgIoE6dOqXGPv/88zRu3Nj6dYsWLRgyZAgA//73vx2eM3PmTFq2bGn9um3btvTu3Zv8/HwCAgIYM2aM9ZinpycTJkwASi4S2rRpA8BPP/1UhncnIiJSNrUqOwEREVeZPXs2X3/9NZs3b+Zf//oXZrOZV155hQYNGpT5GqdPnwauPt0ojYeHB3/4wx/s2i1Dpk6dOuXwvLvvvtuurUWLFgDcddddJR4r6XqWPM+ePVtqviIiIs7QkwgRcRuenp4sWrQIgEuXLjF69Gjuuecep65x8eJFALy9vUuNa9SoETVr1rRrt5znaHI1gL+/v11b3bp1f/dYSdfz8fEB4MKFC6XmKyIi4gwVESLiVjZv3mz98/79+ykqKnLq/Hr16gGQm5tbalyNGuX757W088pzTUvRU79+/XLlIyIi4oiKCBFxG//+979Zvnw5jRs3Jjw8nPT0dOLj4526RsOGDQE4d+7cDciw4lmeQPj6+lZyJiIiUp2oiBARt3Dp0iWefvppioqKWLhwIa+//joNGjQgPj6e3bt3l/k6DRs2pHHjxpw8eZL8/PwbmHHFOHz4MAAdOnSo5ExERKQ6UREhIm7hpZdeIjs7m3HjxtGrVy8aNWrEggULuHLlCk899RR5eXllvla3bt0oKipi3759NzDjirFnzx4A7rzzzkrOREREqhMVESJS7W3evJkNGzbQrl07nnrqKWv7vffeS3R0NMeOHePll18u8/X69OkDQFpaWkWnWqHMZjO7du2ifv36dO3atbLTERGRakRFhIhUa0ajkb/+9a94eHgQExNjt7fDn//8Z1q3bk1KSgqfffZZma4ZERFBvXr12LRp041IucJ8//33/Prrrzz44IPUrl27stMREZFqxGA2m82VnYSIyM1m4cKFJCYm8uGHHxIcHFzZ6Tj04osvsm7dOjZu3Mjtt99e2emIiEg1oicRIiLlMH36dOrWrcuyZcsqOxWHcnJy+OijjxgyZIgKCBERqXAqIkREyqFhw4Y8/PDDbN26lQMHDlR2OnaWL18OXN2lW0REpKJpOJOIiIiIiDhFTyJERERERMQpKiJERERERMQpKiJERERERMQpKiJERERERMQpKiJERERERMQpKiJERERERMQpKiJERERERMQpKiJERERERMQpKiJERERERMQpKiJERERERMQp/z/b1cdyW6OOtwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import oommfc as oc\n", "import discretisedfield as df\n", "import micromagneticmodel as mm\n", "\n", "Ms = 5.8e5 # saturation magnetisation (A/m)\n", "A = 15e-12 # exchange energy constant (J/)\n", "D = 3e-3 # Dzyaloshinkii-Moriya energy constant (J/m**2)\n", "K = 0.5e6 # uniaxial anisotropy constant (J/m**3)\n", "u = (0, 0, 1) # easy axis\n", "gamma0 = 2.211e5 # gyromagnetic ratio (m/As)\n", "alpha = 0.3 # Gilbert damping\n", "\n", "system = mm.System(name=\"dw_pair_conversion\")\n", "system.energy = (\n", " mm.Exchange(A=A)\n", " + mm.DMI(D=D, crystalclass=\"Cnv_z\")\n", " + mm.UniaxialAnisotropy(K=K, u=u)\n", ")\n", "system.dynamics = mm.Precession(gamma0=2.211e5) + mm.Damping(alpha=alpha)\n", "\n", "p1 = (0, 0, 0)\n", "p2 = (150e-9, 50e-9, 2e-9)\n", "cell = (2e-9, 2e-9, 2e-9)\n", "\n", "region = df.Region(p1=p1, p2=p2)\n", "mesh = df.Mesh(region=region, cell=cell)\n", "\n", "\n", "def Ms_fun(pos):\n", " x, y, z = pos\n", " if x < 50e-9 and (y < 15e-9 or y > 35e-9):\n", " return 0\n", " else:\n", " return Ms\n", "\n", "\n", "def m_init(pos):\n", " x, y, z = pos\n", " if 30e-9 < x < 40e-9:\n", " return (0.1, 0.1, -1)\n", " else:\n", " return (0.1, 0.1, 1)\n", "\n", "\n", "system.m = df.Field(mesh, nvdim=3, value=m_init, norm=Ms_fun, valid=\"norm\")\n", "\n", "system.m.z.sel(\"z\").mpl.scalar()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running OOMMF (ExeOOMMFRunner)[2024/08/09 18:15]... (0.8 s)\n" ] }, { "data": { "image/png": "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X//6F8LDwzFjxgx8++23DXFXRERERGQNOLHapjXoWJyCggIcPXoUx44d05Z5eXnh+PHjyM7ORq9evZCYmIj27cWHDxERERGRdeNmc7btoZOImpoaHDp0CLt27UJ2djYEQcCjjz6KuLg4TJ48GV27dkVOTg4+++wzZGVl4d1330VSUlJDtJ2IiIiImgiHM9m2eicRFy9exK5du7B3717cuXMHgiAgJCQEU6ZMQXh4OKRSqTY2JCQE69evR3R0NE6cONEgDSciIiKiJsQrETatXklETEwMcnNzIQgC3NzcEBMTgylTpsDHx0f0uJ49e2qXbyUiIiKiZoxJhE2rVxKRk5ODgIAAxMTEYMyYMXBxcanTcZMmTcLjjz9en7tsVKVq8W5QSYwvt+YsUYoeay+y2Z3KxOq6NSJ19wTxNperjW8kUKU2vjwoAKjVxufbCyZ2lhFEpuoLjib2EJCKtEusDuIrBDzEKsamNysUaZfkgatxhqicjB9b6yy+5oFa5NROzmLPHMBLele0/lE740vEOpnoDnuRjULsrG6FcyIiehgczmTb6pVEpKenIzAw0OzjQkJCEBISUp+7JCIiIiIrInmIL+msjUKhwFdffYV///vfuHLlCsrKytCxY0c8+eSTeOGFF+Du7q4Tv2fPHvztb38zeK6pU6finXfe0Sv/6quvkJycjEuXLsHNzQ3Dhg3D4sWL0aZNG73YkydP4uOPP8bJkychkUgQEhKCJUuWwN/f32Db16xZgx9++AEVFRXo2bMn5syZg/DwcL1YpVKJpKQk7N27F0VFRfDy8sLEiRMxZ84cODqKf2H7Z/VKIuqTQBARERFRC9JycggcOXIEiYmJGDp0KJ5//nnIZDKcOnUKW7Zswddff4309HR4eHjoHffiiy+ie/fuOmXdunXTi0tOTsb777+P0NBQvPXWW7h58yaSk5ORm5uLtLQ0uLq6amNzc3Mxbdo0yOVyLFy4EACQmpqK5557Djt27ICvr682trS0FM899xyKi4sxc+ZMeHl5ITMzE4sWLUJFRQUiIyN12rFo0SIcPnwYkZGRCAkJQU5ODtauXYuCggKsXr3arD5rHltKExEREZFVaUnDmfr374+jR4/qJArR0dHo06cP3n77bWzevBmvv/663nFhYWH4y1/+Inru4uJiJCQkoHfv3khOToa9/f3h3b1798a8efOw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mfO8MmTatGk4ffq0wStfLa2viAyx2SRCpVIhJSUFO3fuRGFhIdzd3REREYEFCxZAJpM1dfMs7o033sCXX35ptD40NBRbt27V/n7x4kXEx8fjxIkTqKmpQUBAAObPn4+wsDBLNNcqGUsiAPYXABw6dAibNm3C+fPnIZFIEBISgpdffhn9+vXTicvJyUFCQoJ2uGHfvn3x6quv2szwnIKCAvzf//0ffv75Z9y+fRtOTk7w9/fHjBkzMHLkSJ1YW+mradOmITs722Ddn1+bAPP6RaFQID4+Hj/88AMqKirQs2dPzJkzR7vRZnNT1746fvw4pk+fLnquw4cPo1OnTtrfq6ur8emnn2Lfvn0oKiqCXC7HxIkT8cILL4guMGGtzH1eGTreWBLR0vqKyBCbTSKIiIiIiKh+bGvMDhERERERPTQmEUREREREZBYmEUREREREZBYmEUREREREZBYmEUREREREZBYmEUREREREZBYmEUREREREZBYmEUREREREZBYmEURE9bRu3Tr4+fnh3LlzTd0UPe+99x6CgoJw/fr1pm4KERG1QEwiiIjq4Y8//sC//vUvPPPMM/D19W3q5uiZM2cOACAhIaFpG0JERC0Skwgionr47LPPUFFRgblz5zZ1Uwzy9PTE+PHjkZGRgf/+979N3RwiImphmEQQEZmpsrISX331FXx8fBAQENDUzTFq3LhxEAQBO3bsaOqmEBFRC8MkgohavEWLFsHX1xcffvihXt3ly5cREhKCkJAQXLlypU7nO3jwIO7du4fRo0cbrPf19cXw4cOhUqmwYcMGPPPMMwgMDMSQIUPw0UcfQalU6h0zfPhw7bCobdu2YcyYMQgKCsLw4cOxceNGCIIAADhz5gxefPFFhIaGIiQkBPPmzUNhYaHBdvTr1w8dOnRARkYGqqur6/TYiIiI6oJJBBG1eMuXL4eXlxc+//xzHDt2TFteU1ODJUuWoKKiAm+++Sa6du1ap/MdPXoUABAaGioat3jxYiQlJaFbt2544oknUF5ejk2bNuHNN980esyqVavw4YcfokOHDggLC0NpaSni4+ORmJiIX375BVOnTkVRURHCwsLg4eGBI0eOYObMmaiqqtI7l0QiweOPP447d+7g119/rdNjIyIiqgsmEUTU4j3yyCP44IMPAACvv/467ty5A+D+6kqnT5/G008/jUmTJtX5fL/88gscHBxEhzIVFhbi/PnzOHToED777DN89tln+PLLL9G6dWvs27cPBQUFBo87cOAA9u3bhw0bNuCzzz5DWloapFIpNm/ejKVLl+L111/Hnj17kJCQgMzMTAwYMAAFBQXYv3+/wfMFBQUBAE6cOFHnx0dERGQKkwgisgkDBgxAXFwcbt68ib///e/4z3/+gw0bNsDDwwMrVqyo83lu376NP/74A15eXnB2dhaNffvtt+Hh4aH9vXPnzhg3bhwA4D//+Y/BYxYsWIAuXbpof+/RoweGDBmCyspKeHl5ISYmRlsnlUoxffp0AMaThO7duwMAfvvttzo8OiIiorpxaOoGEBFZyqJFi/DTTz/hwIED+Pe//w1BEPD++++jTZs2dT7H7du3Ady/uiHG0dERf/nLX/TKNUOmbt26ZfC4J554Qq+sc+fOAIBBgwYZrTN2Pk07S0pKRNtLRERkDl6JICKbIZVKsXr1agBAWVkZpkyZgsGDB5t1jnv37gEAZDKZaFy7du1gb2+vV645ztDkagCQy+V6Za6uribrjJ3Pzc0NAHD37l3R9hIREZmDSQQR2ZQDBw5of87Pz4dKpTLr+FatWgEAysvLRePs7Or38ip2XH3OqUl6WrduXa/2EBERGcIkgohsxn/+8x9s3LgRHh4eCAsLQ05ODpKSksw6R9u2bQEApaWljdDChqe5AuHu7t7ELSEiopaESQQR2YSysjK89tprUKlUWLVqFT766CO0adMGSUlJOHnyZJ3P07ZtW3h4eODmzZuorKxsxBY3jIsXLwIA/P39m7glRETUkjCJICKb8O6776KwsBCxsbF48skn0a5dO6xcuRK1tbVYunQpKioq6nyufv36QaVS4ezZs43Y4oZx6tQpAMDjjz/exC0hIqKWhEkEEbV4Bw4cwN69e9GzZ08sXbpUW/7UU08hOjoaV69exXvvvVfn8w0dOhQAkJ2d3dBNbVCCIODEiRNo3bo1+vbt29TNISKiFoRJBBG1aAqFAn//+9/h6OiI+Ph4vb0d/va3v6Fr165IT0/Ht99+W6dzhoeHo1WrVsjMzGyMJjeYX375BTdu3MCzzz4LJyenpm4OERG1IBJBEISmbgQRUXOzatUqpKSkYPfu3QgMDGzq5hj0zjvvYNeuXdi3bx8ee+yxpm4OERG1ILwSQURUD3PnzoWrqys2bNjQ1E0xqKioCF999RXGjRvHBIKIiBockwgionpo27Ytnn/+eRw6dAjnzp1r6ubo2bhxI4D7u3QTERE1NA5nIiIiIiIis/BKBBERERERmYVJBBERERERmYVJBBERERERmYVJBBERERERmYVJBBERERERmYVJBBERERERmYVJBBERERERmYVJBBERERERmYVJBBERERERmYVJBBERERERmeX/B5UG0hyEpMkeAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "md = oc.MinDriver()\n", "md.drive(system)\n", "\n", "system.m.z.sel(\"z\").mpl.scalar()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "ux = 400 # velocity in x direction (m/s)\n", "beta = 0.5 # non-adiabatic STT parameter\n", "\n", "system.dynamics += mm.ZhangLi(u=ux, beta=beta)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "706a042313f84c80801e2fff497e9db5", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Running OOMMF (ExeOOMMFRunner): 0%| | 0/200 files written [00:00]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Running OOMMF (ExeOOMMFRunner)[2024/08/09 18:15] took 4.1 s\n" ] }, { "data": { "image/png": "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4Obm1qS8oZ+hi0cBICQkpEmZr6+vyTpj2/Pz8wMAVFVViY6XiIgcC4N0InIp+/fv1///uXPnoNVqzerv7+8PAKiurhZtJ5dbdngV62fJNhv+qGjTpo1F4yEiIvtgkE5ELuPbb7/Fpk2bEBQUhISEBBQWFiI9Pd2sbbRv3x4AcPPmTQlGaH0NZ9ADAgLsPBIiIjIHg3Qicgl37tzBn/70J2i1WqxYsQLvvfceAgMDkZ6ejpMnTzZ7O+3bt0dQUBCuXr2K2tpaCUdsHSUlJQCA3r1723kkRERkDgbpROQS3nzzTZSXl2PmzJl46KGH0KFDByxfvhz19fV44YUXUFNT0+xt9e/fH1qtFmfPnpVwxNZx6tQpAMDAgQPtPBIiIjIHg3Qicnr79+/H7t270atXL7zwwgv68kceeQTJyckoLS3F22+/3eztPfzwwwCAgoICaw/VqgRBwLFjx9CmTRv069fP3sMhIiIzMEgnIqemVCrx+uuvw8PDA6mpqU1ym//lL39B9+7dsWPHDnz++efN2ubo0aPh7++PvXv3SjFkqzl+/Dh+/vlnTJw4EV5eXvYeDhERmUEmCIJg70EQEbU2K1asQGZmJj755BNER0fbezgGvfbaa8jJycGePXtw77332ns4RERkBp5JJyKywMKFC+Hr64uNGzfaeygGVVRUYNeuXZgwYQIDdCKiVohBOhGRBdq3b48nnngCn332GYqLi+09nCY2bdoE4O5dVomIqPXhchciIiIiIgfDM+lERERERA6GQToRERERkYNhkE5ERERE5GAYpBMRERERORgG6UREREREDoZBOhERERGRg2GQTkRERETkYBikExERERE5GAbpREREREQOhkE6EREREZGD+X8YdhSFDRZGaQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "td = oc.TimeDriver()\n", "td.drive(system, t=0.2e-9, n=200, verbose=2)\n", "\n", "system.m.orientation.z.sel(\"z\").mpl.scalar()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As a result, we got a skyrmion formed in the wider region.\n", "\n", "## Data analysis\n", "\n", "We can use the `micromagneticdata` package for post processing of simulation data.\n", "\n", "We get access to:\n", "- initial magnetisation\n", "- magnetisation snapshots from the simulation, e.g. at the timesteps specified in `time_driver.drive(...)`\n", "- tabular data recorded during the simulation via `ubermagtable`, e.g. total energy as a function of time" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "tags": [ "nbval-ignore-output" ] }, "outputs": [], "source": [ "import micromagneticdata as mdata" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### `Data`\n", "\n", "We can access data from past simulation runs based on the system name used to run the simulation." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "tags": [ "nbval-ignore-output" ] }, "outputs": [], "source": [ "data = mdata.Data(\"dw_pair_conversion\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `Data` object contains all simulation runs of the `System`, these are called drives. We can check how many drives does our data has:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have used two drivers in our simulation, which has created two corresponding drives.\n", "\n", "We can also extract the details using the `info` property." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
drive_numberdatetimedriveradaptern_threadstn
002024-08-0918:15:58MinDriveroommfcNoneNaNNaN
112024-08-0918:15:59TimeDriveroommfcNone2.000000e-10200.0
\n", "
" ], "text/plain": [ " drive_number date time driver adapter n_threads \\\n", "0 0 2024-08-09 18:15:58 MinDriver oommfc None \n", "1 1 2024-08-09 18:15:59 TimeDriver oommfc None \n", "\n", " t n \n", "0 NaN NaN \n", "1 2.000000e-10 200.0 " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.info" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### `Drive`\n", "We can explicitly check the two drivers seperately by indexing the `Data` object." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'drive_number': 0,\n", " 'date': '2024-08-09',\n", " 'time': '18:15:58',\n", " 'driver': 'MinDriver',\n", " 'adapter': 'oommfc',\n", " 'n_threads': None}" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[0].info" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A `drive` object gives acces to all data created from a single simulation run, e.g. call to `min_driver.drive()`\n", "\n", "We can obtain the intial magnetisation with `m0`. We get a `discretisedfield.Field` and can use its plotting methods to visualise the initial configuration" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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lrZspjo6cuSIJk2apLp162rFihWlfu8EBASUuYTKZDJV6++3BQsWKCcnRyNHjrT+vD99+rSuX78ui8Wi06dP67///a+1vyePFezLI0N6WFiYCgsLdfDgwWLtubm5OnbsmMLCwlxUmevFxcVpwYIFGjp0qN54441iD06RpJCQEHl7e2v//v0lzi1qq+7jd/36dWVmZmrnzp3q3bu39TV27FhJNz6537t3byUmJjJekvUD2qWtwyxqa9iwoTp06CCp9D2H9+/fL4PBoLvuusuBlbpeUbgsLCwscSw/P9/6v4xV6WwZl4CAAAUGBurAgQOl9v319aqzI0eOaOLEiTIajVq+fHmZH4js0KGDTCZTsTAqSf/973+VkZFRrX+OnT17VtnZ2RoxYkSxn/kHDx5UTk6OevfurSlTplj7e/JYwb48MqT369dPBoNBy5cvL9a+du1a5eTkaODAgS6qzLUWLFigBQsWaPDgwZozZ06pD3QyGo3q2bOnkpOTdezYMWt7VlaW1q1bp5YtW5bYNae68fX11XvvvVfi9corr0iSunfvrvfee0+9evVivHRj7bnRaFRSUpJ1fbp0I5Bu375dLVu2VHBwsIKDgxUWFqZt27YVm4UymUzatm2bunbtWupsfHVS9JTH9evXF2u/cuWKtm/frttuu42xKoet49K/f3+lpaUVe4BNQUGBEhISVK9ePd13331Ord/Zjh49qkmTJsnPz08rVqwod0vCos0Dfvt7s+jr6vx7c8qUKaX+zG/Tpo18fHz03nvv6c9//rO1vyePFezLY584+vrrryshIUExMTHq0aOHUlNTtXLlSnXq1EnLly/3uCeOrlq1Sq+99pqaNm2qGTNmlJhBb9Soke655x5JN/YiHjFihGrWrKkJEybIaDQqMTFRJ06c0KJFi9S9e3dXvAWXO3PmjB544IESTxxlvKSPP/5YL7/8su68804NHz5ceXl51l0kFi5cqHvvvVfSjQ+ujRs3To0bNy7xtMjVq1erbdu2rnwbDpeenq5hw4bp8uXLGjhwoDp16qTLly9r7dq1Sk9P18svv6zRo0dL8qyx2rBhg3U5WUJCgvLy8qwf2G7atKmGDBli7WvLuFy8eFHDhw/XxYsXNXHiRAUGBlqfODp79myNGDHCeW/STio6Vr/+XnvqqadKDegxMTHy8/Ozfv3YY4/pyy+/VGxs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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data[0].m0.orientation.sel(\"z\").z.mpl.scalar()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can check the number of simulation snapshots saved for the drive (the initial magnetisation `m0` is always excluded):" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[0].n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the first drive, the energy minimisation, we only have one single element, saved at the end of the energy minimisation.\n", "\n", "To obtain the finial state we can access the first data element of the drive." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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GWbPno2HHnoIHTt2xMqVK1FXV4cXXngB1dXVTT7WwIEDodFocO7cOQkjtozTp08DAO6//34bR0JERKZgkk5Erd7Bgwexd+9e9O7dGy+88IKufcSIEZgxYwZKSkrw1ltvNfl4Dz/8MAAgLy/P0qFalCAIOHHiBNq2bYsBAwbYOhwiIjIBk3QiatUUCgVee+01uLq6Ijk5uVFt87///e/o3r07du7ciS+//LJJxxwzZgzatGmD/fv3SxGyxZw8eRK//vorJk2aBHd3d1uHQ0REJpAJgiDYOggiopZm1apVSE9Px65duxAREWHrcPR69dVXkZWVhX379uG+++6zdThERGQCnkknIjLD4sWL4eXlhU2bNtk6FL3Ky8uxZ88eTJw4kQk6EVELxCSdiMgMHTp0wOOPP44vvvgCRUVFtg6nkc2bNwO4d5dVIiJqebjdhYiIiIjIzvBMOhERERGRnWGSTkRERERkZ5ikExERERHZGSbpRERERER2hkk6EREREZGdYZJORERERGRnmKQTEREREdkZJulERERERHaGSToRERERkZ1hkk5EREREZGf+PzNMGiv9j4MzAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data[0][0].orientation.sel(\"z\").z.mpl.scalar()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also use negative indices to access elements of the drive starting from the back.\n", "\n", "In this case we only have a single element in the drive, so the first and the last element are identical:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[0][0] == data[0][-1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us now study the time drive (`data[1]`) in more detail. For convenience we assign it to a new name `time_drive` (and use negative indexing to select the last drive)." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'drive_number': 1,\n", " 'date': '2024-08-09',\n", " 'time': '18:15:59',\n", " 'driver': 'TimeDriver',\n", " 'adapter': 'oommfc',\n", " 't': 2e-10,\n", " 'n': 200,\n", " 'n_threads': None}" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "time_drive = data[-1]\n", "time_drive.info" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can observe the final magnetisation state of the time driver by indexing the last drive, i.e., `time_drive[-1]`" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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4Obm1qS8oZ+hi0cBICQkpEmZr6+vyTpj2/Pz8wMAVFVViY6XiIgcC4N0InIp+/fv1///uXPnoNVqzerv7+8PAKiurhZtJ5dbdngV62fJNhv+qGjTpo1F4yEiIvtgkE5ELuPbb7/Fpk2bEBQUhISEBBQWFiI9Pd2sbbRv3x4AcPPmTQlGaH0NZ9ADAgLsPBIiIjIHg3Qicgl37tzBn/70J2i1WqxYsQLvvfceAgMDkZ6ejpMnTzZ7O+3bt0dQUBCuXr2K2tpaCUdsHSUlJQCA3r1723kkRERkDgbpROQS3nzzTZSXl2PmzJl46KGH0KFDByxfvhz19fV44YUXUFNT0+xt9e/fH1qtFmfPnpVwxNZx6tQpAMDAgQPtPBIiIjIHg3Qicnr79+/H7t270atXL7zwwgv68kceeQTJyckoLS3F22+/3eztPfzwwwCAgoICaw/VqgRBwLFjx9CmTRv069fP3sMhIiIzMEgnIqemVCrx+uuvw8PDA6mpqU1ym//lL39B9+7dsWPHDnz++efN2ubo0aPh7++PvXv3SjFkqzl+/Dh+/vlnTJw4EV5eXvYeDhERmUEmCIJg70EQEbU2K1asQGZmJj755BNER0fbezgGvfbaa8jJycGePXtw77332ns4RERkBp5JJyKywMKFC+Hr64uNGzfaeygGVVRUYNeuXZgwYQIDdCKiVohBOhGRBdq3b48nnngCn332GYqLi+09nCY2bdoE4O5dVomIqPXhchciIiIiIgfDM+lERERERA6GQToRERERkYNhkE5ERERE5GAYpBMRERERORgG6UREREREDoZBOhERERGRg2GQTkRERETkYBikExERERE5GAbpREREREQOhkE6EREREZGD+X8YdhSFDRZGaQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "time_drive[-1].orientation.sel(\"z\").z.mpl.scalar()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can create an interactive plot with a slider for the time to interactively investigate the conversion of the domain wall pair into a skyrmion." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "tags": [ "nbval-ignore-output" ] }, "outputs": [ { "data": { "application/javascript": "(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n var py_version = '3.4.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\n var reloading = false;\n var Bokeh = root.Bokeh;\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks;\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n if (js_exports == null) js_exports = {};\n\n root._bokeh_onload_callbacks.push(callback);\n\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n run_callbacks();\n return null;\n }\n if (!reloading) {\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n }\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n window._bokeh_on_load = on_load\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n var skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {}, 'shim': {}});\n root._bokeh_is_loading = css_urls.length + 0;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n }\n\n var existing_stylesheets = []\n var links = document.getElementsByTagName('link')\n for (var i = 0; i < links.length; i++) {\n var link = links[i]\n if (link.href != null) {\n\texisting_stylesheets.push(link.href)\n }\n }\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n if (existing_stylesheets.indexOf(url) !== -1) {\n\ton_load()\n\tcontinue;\n }\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n } var existing_scripts = []\n var scripts = document.getElementsByTagName('script')\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i]\n if (script.src != null) {\n\texisting_scripts.push(script.src)\n }\n }\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (var i = 0; i < js_modules.length; i++) {\n var url = js_modules[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (const name in js_exports) {\n var url = js_exports[name];\n if (skip.indexOf(url) >= 0 || root[name] != null) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onerror = on_error;\n element.async = false;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n element.textContent = `\n import ${name} from \"${url}\"\n window.${name} = ${name}\n window._bokeh_on_load()\n `\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.4.2.min.js\", \"https://cdn.holoviz.org/panel/1.4.4/dist/panel.min.js\"];\n var js_modules = [];\n var js_exports = {};\n var css_urls = [];\n var inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n\ttry {\n inline_js[i].call(root, root.Bokeh);\n\t} catch(e) {\n\t if (!reloading) {\n\t throw e;\n\t }\n\t}\n }\n // Cache old bokeh versions\n if (Bokeh != undefined && !reloading) {\n\tvar NewBokeh = root.Bokeh;\n\tif (Bokeh.versions === undefined) {\n\t Bokeh.versions = new Map();\n\t}\n\tif (NewBokeh.version !== Bokeh.version) {\n\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n\t}\n\troot.Bokeh = Bokeh;\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n root._bokeh_is_initializing = false\n }\n\n function load_or_wait() {\n // Implement a backoff loop that tries to ensure we do not load multiple\n // versions of Bokeh and its dependencies at the same time.\n // In recent versions we use the root._bokeh_is_initializing flag\n // to determine whether there is an ongoing attempt to initialize\n // bokeh, however for backward compatibility we also try to ensure\n // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n // before older versions are fully initialized.\n if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n root._bokeh_is_initializing = false;\n root._bokeh_onload_callbacks = undefined;\n console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n load_or_wait();\n } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n setTimeout(load_or_wait, 100);\n } else {\n root._bokeh_is_initializing = true\n root._bokeh_onload_callbacks = []\n var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n if (!reloading && !bokeh_loaded) {\n\troot.Bokeh = undefined;\n }\n load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n\trun_inline_js();\n });\n }\n }\n // Give older versions of the autoload script a head-start to ensure\n // they initialize before we start loading newer version.\n setTimeout(load_or_wait, 100)\n}(window));", "application/vnd.holoviews_load.v0+json": "" }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n function JupyterCommManager() {\n }\n\n JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n comm_manager.register_target(comm_id, function(comm) {\n comm.on_msg(msg_handler);\n });\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n comm.onMsg = msg_handler;\n });\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n console.log(message)\n var content = {data: message.data, comm_id};\n var buffers = []\n for (var buffer of message.buffers || []) {\n buffers.push(new DataView(buffer))\n }\n var metadata = message.metadata || {};\n var msg = {content, buffers, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n })\n }\n }\n\n JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n if (comm_id in window.PyViz.comms) {\n return window.PyViz.comms[comm_id];\n } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n if (msg_handler) {\n comm.on_msg(msg_handler);\n }\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n comm.open();\n if (msg_handler) {\n comm.onMsg = msg_handler;\n }\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n var comm_promise = google.colab.kernel.comms.open(comm_id)\n comm_promise.then((comm) => {\n window.PyViz.comms[comm_id] = comm;\n if (msg_handler) {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data};\n var metadata = message.metadata || {comm_id};\n var msg = {content, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n }\n }) \n var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n return comm_promise.then((comm) => {\n comm.send(data, metadata, buffers, disposeOnDone);\n });\n };\n var comm = {\n send: sendClosure\n };\n }\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n window.PyViz.comm_manager = new JupyterCommManager();\n \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n var div = document.createElement(\"div\");\n var script = document.createElement(\"script\");\n node.appendChild(div);\n node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n return\n }\n var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n if (id !== undefined) {\n var nchildren = toinsert.length;\n var html_node = toinsert[nchildren-1].children[0];\n html_node.innerHTML = output.data[HTML_MIME_TYPE];\n var scripts = [];\n var nodelist = html_node.querySelectorAll(\"script\");\n for (var i in nodelist) {\n if (nodelist.hasOwnProperty(i)) {\n scripts.push(nodelist[i])\n }\n }\n\n scripts.forEach( function (oldScript) {\n var newScript = document.createElement(\"script\");\n var attrs = [];\n var nodemap = oldScript.attributes;\n for (var j in nodemap) {\n if (nodemap.hasOwnProperty(j)) {\n attrs.push(nodemap[j])\n }\n }\n attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n oldScript.parentNode.replaceChild(newScript, oldScript);\n });\n if (JS_MIME_TYPE in output.data) {\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n }\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n window.PyViz.plot_index[id] = Bokeh.index[id];\n } else {\n window.PyViz.plot_index[id] = null;\n }\n } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n var bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n var script_attrs = bk_div.children[0].attributes;\n for (var i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n var id = handle.cell.output_area._hv_plot_id;\n var server_id = handle.cell.output_area._bokeh_server_id;\n if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (server_id !== null) {\n comm.send({event_type: 'server_delete', 'id': server_id});\n return;\n } else if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete PyViz.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n var doc = window.Bokeh.index[id].model.document\n doc.clear();\n const i = window.Bokeh.documents.indexOf(doc);\n if (i > -1) {\n window.Bokeh.documents.splice(i, 1);\n }\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete PyViz.comms[\"hv-extension-comm\"];\n window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n handle_clear_output(event, {cell: {output_area: handle.output_area}})\n handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n var toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[0]);\n element.append(toinsert);\n return toinsert\n }\n\n events.on('output_added.OutputArea', handle_add_output);\n events.on('output_updated.OutputArea', handle_update_output);\n events.on('clear_output.CodeCell', handle_clear_output);\n events.on('delete.Cell', handle_clear_output);\n events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n safe: true,\n index: 0\n });\n}\n\nif (window.Jupyter !== undefined) {\n try {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n } catch(err) {\n }\n}\n", "application/vnd.holoviews_load.v0+json": "" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.holoviews_exec.v0+json": "", "text/html": [ "
\n", "
\n", "
\n", "" ] }, "metadata": { "application/vnd.holoviews_exec.v0+json": { "id": "p1002" } }, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9a4cdee326f04c519c40769adcd5c828", "version_major": 2, "version_minor": 0 }, "text/plain": [ "BokehModel(combine_events=True, render_bundle={'docs_json': {'b483dfde-f248-4c39-a645-5281fecb76a2': {'version…" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "time_drive.hv(\n", " kdims=[\"x\", \"y\"],\n", " scalar_kw={\"clim\": (-Ms, Ms), \"cmap\": \"coolwarm\"},\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### `Table`\n", "\n", "We also get access to all tabular data recorded during the drive. The data is made available as `pandas.Dataframe`." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "tags": [ "nbval-ignore-output" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EE_calc_countmax_dmdtdE/dtdelta_Eaverage_uE_exchangemax_spin_ang_exchangestage_max_spin_ang_exchangerun_max_spin_ang_exchangeDMI_Cnv_z:dmi:EnergyE_uniaxialanisotropyiterationstage_iterationstagemxmymzlast_time_stept
0-3.138757e-1961.05105.7866621.131548e-091.234439e-22400.07.819720e-1924.98191924.98191924.981919-1.791404e-186.955566e-198.08.00.0-0.0043560.0017110.7793091.146802e-131.000000e-12
1-3.123365e-1992.05393.8203621.881778e-092.714936e-22400.07.859070e-1925.99911425.99911425.999114-1.795166e-186.969222e-1914.05.01.0-0.0073990.0025270.7792121.481817e-132.000000e-12
2-3.101629e-19129.05478.1059372.410525e-091.525909e-22400.07.908188e-1926.83954026.83954026.839540-1.800156e-186.991741e-1921.06.02.0-0.0100580.0025960.7791036.371456e-143.000000e-12
3-3.075651e-19172.05775.5961172.750961e-092.026333e-22400.07.963184e-1927.52301827.52301827.523018-1.806035e-187.021517e-1928.06.03.0-0.0122430.0020780.7790377.397143e-144.000000e-12
4-3.046980e-19209.06099.4084552.938665e-091.417659e-22400.08.020796e-1927.96849427.96849427.968494-1.812650e-187.058726e-1935.06.04.0-0.0139150.0011390.7790584.838847e-145.000000e-12
...............................................................
195-4.666219e-207786.06419.7137172.798949e-101.373560e-23400.01.222876e-1829.27924229.39648733.740702-1.937412e-186.678731e-191372.06.0195.0-0.007893-0.0080170.8992295.094469e-141.960000e-10
196-4.634379e-207829.06444.1888762.763562e-101.564748e-23400.01.222846e-1829.35833829.35833833.740702-1.936677e-186.674871e-191379.06.0196.0-0.007885-0.0080070.8992986.044352e-141.970000e-10
197-4.601751e-207866.06397.2957442.905618e-101.926693e-23400.01.222790e-1829.41828329.41828333.740702-1.935846e-186.670387e-191386.06.0197.0-0.007876-0.0079980.8993837.101084e-141.980000e-10
198-4.568193e-207909.06374.5879433.124776e-101.795553e-23400.01.222710e-1829.39700729.41986133.740702-1.934920e-186.665281e-191393.06.0198.0-0.007866-0.0079890.8994825.961504e-141.990000e-10
199-4.533615e-207946.06479.6745663.377564e-102.490729e-23400.01.222607e-1829.30131129.39700733.740702-1.933899e-186.659556e-191400.06.0199.0-0.007854-0.0079810.8995957.547542e-142.000000e-10
\n", "

200 rows × 20 columns

\n", "
" ], "text/plain": [ " E E_calc_count max_dmdt dE/dt delta_E \\\n", "0 -3.138757e-19 61.0 5105.786662 1.131548e-09 1.234439e-22 \n", "1 -3.123365e-19 92.0 5393.820362 1.881778e-09 2.714936e-22 \n", "2 -3.101629e-19 129.0 5478.105937 2.410525e-09 1.525909e-22 \n", "3 -3.075651e-19 172.0 5775.596117 2.750961e-09 2.026333e-22 \n", "4 -3.046980e-19 209.0 6099.408455 2.938665e-09 1.417659e-22 \n", ".. ... ... ... ... ... \n", "195 -4.666219e-20 7786.0 6419.713717 2.798949e-10 1.373560e-23 \n", "196 -4.634379e-20 7829.0 6444.188876 2.763562e-10 1.564748e-23 \n", "197 -4.601751e-20 7866.0 6397.295744 2.905618e-10 1.926693e-23 \n", "198 -4.568193e-20 7909.0 6374.587943 3.124776e-10 1.795553e-23 \n", "199 -4.533615e-20 7946.0 6479.674566 3.377564e-10 2.490729e-23 \n", "\n", " average_u E_exchange max_spin_ang_exchange \\\n", "0 400.0 7.819720e-19 24.981919 \n", "1 400.0 7.859070e-19 25.999114 \n", "2 400.0 7.908188e-19 26.839540 \n", "3 400.0 7.963184e-19 27.523018 \n", "4 400.0 8.020796e-19 27.968494 \n", ".. ... ... ... \n", "195 400.0 1.222876e-18 29.279242 \n", "196 400.0 1.222846e-18 29.358338 \n", "197 400.0 1.222790e-18 29.418283 \n", "198 400.0 1.222710e-18 29.397007 \n", "199 400.0 1.222607e-18 29.301311 \n", "\n", " stage_max_spin_ang_exchange run_max_spin_ang_exchange \\\n", "0 24.981919 24.981919 \n", "1 25.999114 25.999114 \n", "2 26.839540 26.839540 \n", "3 27.523018 27.523018 \n", "4 27.968494 27.968494 \n", ".. ... ... \n", "195 29.396487 33.740702 \n", "196 29.358338 33.740702 \n", "197 29.418283 33.740702 \n", "198 29.419861 33.740702 \n", "199 29.397007 33.740702 \n", "\n", " DMI_Cnv_z:dmi:Energy E_uniaxialanisotropy iteration stage_iteration \\\n", "0 -1.791404e-18 6.955566e-19 8.0 8.0 \n", "1 -1.795166e-18 6.969222e-19 14.0 5.0 \n", "2 -1.800156e-18 6.991741e-19 21.0 6.0 \n", "3 -1.806035e-18 7.021517e-19 28.0 6.0 \n", "4 -1.812650e-18 7.058726e-19 35.0 6.0 \n", ".. ... ... ... ... \n", "195 -1.937412e-18 6.678731e-19 1372.0 6.0 \n", "196 -1.936677e-18 6.674871e-19 1379.0 6.0 \n", "197 -1.935846e-18 6.670387e-19 1386.0 6.0 \n", "198 -1.934920e-18 6.665281e-19 1393.0 6.0 \n", "199 -1.933899e-18 6.659556e-19 1400.0 6.0 \n", "\n", " stage mx my mz last_time_step t \n", "0 0.0 -0.004356 0.001711 0.779309 1.146802e-13 1.000000e-12 \n", "1 1.0 -0.007399 0.002527 0.779212 1.481817e-13 2.000000e-12 \n", "2 2.0 -0.010058 0.002596 0.779103 6.371456e-14 3.000000e-12 \n", "3 3.0 -0.012243 0.002078 0.779037 7.397143e-14 4.000000e-12 \n", "4 4.0 -0.013915 0.001139 0.779058 4.838847e-14 5.000000e-12 \n", ".. ... ... ... ... ... ... \n", "195 195.0 -0.007893 -0.008017 0.899229 5.094469e-14 1.960000e-10 \n", "196 196.0 -0.007885 -0.008007 0.899298 6.044352e-14 1.970000e-10 \n", "197 197.0 -0.007876 -0.007998 0.899383 7.101084e-14 1.980000e-10 \n", "198 198.0 -0.007866 -0.007989 0.899482 5.961504e-14 1.990000e-10 \n", "199 199.0 -0.007854 -0.007981 0.899595 7.547542e-14 2.000000e-10 \n", "\n", "[200 rows x 20 columns]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "time_drive.table.data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `table` object provides a convenient plotting method. We can use it to visualise e.g. the total energy or the average magnetisation as a function of time. Ubermag, more precisely, `ubermagtable` automatically uses time for the x axis based on the metadata of the drive." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "tags": [] }, "outputs": [ { "data": { "image/png": "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vRBzr07RPDCpN5Gh3rkmsIiIiIgnUNg12fbUM7z95T6KSssBsFhgyrDOTLyqU5NuWSwiIiLSEijsmmzRt0crg27fLq2YNrKLhi2IiIiINBKFXZPdOKIL21PPMLRPO5ITo80uR0RERMSnKOyabEC31tr2V0RERKSJ+NR2wSIiIiIiF1LYFRERERGfpbArIiIiIj5LYVdEREREfJbCroiIiIj4LIVdEREREfFZCrsiIiIi4rMUdkVERETEZynsioiIiIjPUtgVEREREZ+lsCsiIiIiPkthV0RERER8lsKuiIiIiPgshV0RERER8VkKuyIiIiLisxR2RURERMRnKeyKiIiIiM9S2BURERERn6WwKyIiIiI+y2IYhmF2ESIiIiIiTUE9uyIiIiLisxR2RURERMRnKeyKiIiIiM9S2BURERERn6WwKyIiIiI+S2FXRERERHyWwq6IiIiI+Cw/swtoSVwuF++++y7z5s0jIyODmJgYrr/+eh5//HFCQkLMLq/JHT16lM8++4x169Zx/Phx7HY7iYmJjB8/nrvuuqtKG7zyyiu8+uqr1V7n17/+Nffdd19zld1skpOTqz0eEhLC9u3bqxw7cuQI//jHP9i8eTNlZWX06tWLxx57jKuuuqo5Sm1Wl3oWAPz8/EhJSfnRc739uXnjjTdISUkhJSWF9PR04uPjWbVqVY3n79y5k3/+85/s3LkTi8XCwIED+dWvfkXPnj0vOjczM5Pnn3+er7/+muLiYrp168YDDzzA9ddf35RfUqOobbvY7XY+/fRTVq9ezYEDBzh79ixt2rShf//+/OxnP6Nr165Vzk9PT2fMmDHV3rN79+4sXry4Sb6exlSXZ+a3v/0tn3zySbWvvfTSS4wfP77KMYfDweuvv86nn35KVlYW7dq146abbuKBBx7A39+/0b+WxlbbtrnUc1Dh//7v/5g8efKPnu8Nz01d3qehbu9FBQUFvPjiiyxbtoxz586RmJjIjBkzuP3227FYLE36dSnsNqOnn36aOXPmMG7cOO69914OHz7MnDlz2Lt3L++88w5Wq293tH/00Ue89957jB49mkmTJuHn58fGjRt58cUX+eqrr5g/fz5BQUFVPud3v/sd0dHRVY716dOnOctuVoMHD2b69OlVjv3wjeP48ePcfvvt2Gw27r//fsLCwliwYAH3338///nPfxg6dGhz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cMstt/DSSy+xbt06/vOf/xAWFsasWbM4ePDgRdep6NH94ThfERFPpLArIuIhKtbOLS8vr/b1Hj164HK5OHbs2CWv89VXX1107PDhw+zbt4+QkBB69uxZ4+daLBZGjBhRuWlFdWH38OHDAJe8joiIp1DYFRHxENHR0fj7+3PixAmcTudFr1est7t79+5LXmfu3LlVlg0rKSnhqaeewjAMpk2bRlBQEAB79+5l2bJlOByOKp9/7tw5du7cCUD79u0vuv6uXbuAH1/vV0TEE2idXRERDxEQEMCwYcNYvXo1U6ZMoVevXvj7+zNo0CCmTZvGNddcw3//+182bdrE5MmTa7zO5MmTmT59OldccQXh4eFs2bKFM2fO0L17d37+859Xnnfy5Ekee+wxwsPD6dOnD61bt6agoIDNmzdTVFTEqFGjLlp+rKioiD179tClSxetsSsiXkE9uyIiHuRvf/sbU6ZM4dy5cyxevJiFCxeyefNmwN2T2qlTp2p7Yy/0xz/+kV/+8pecPHmSlStXAjBjxgzee+89wsPDK8/r378/v/jFL+jduzdHjx5lyZIl7Nmzh+TkZJ5++mleeeWVi669fPly7HY706dPb+SvXESkaVgMwzDMLkJERGpn9uzZPP3007z88stcd911VV4bPXo0GRkZHDhwoMnuf99997F161ZWr16tCWoi4hXUsysi4kVuu+024uLiePPNN5v93ikpKXz77bfcc889Croi4jUUdkVEvEhgYCA///nP2bNnD6tXr27We//rX/+iVatW3H///c16XxGRhtAwBhERH9EcwxhERLyNwq6IiIiI+CwNYxARERERn6WwKyIiIiI+S2FXRERERHyWwq6IiIiI+CyFXRERERHxWQq7IiIiIuKzFHZFRERExGcp7IqIiIiIz/r/AYDAkcru1g4GAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "time_drive.table.mpl(y=[\"E\"])" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "tags": [] }, "outputs": [ { "data": { "image/png": "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N25cu7edmpqadBxw04lyKSkpSdd/4YUX9N5772nx4sXyeDzt3n8Ty7JlWQe+6cbhEI1a3Ls7CdomOdomOdomOdqmdbRLcrRNcrRNcj2xbToceu+55x6df/75GjNmTEJ5WlqaTj/99EOqVEFBgb788stWhzCUlJQkHfogSaFQSHfffbemTp2q/Px8bdu2Lb6eJNXW1mrbtm3Kzc3lphkAAABHiA6PMn7sscd04YUX6qtf/aoeeeSRVq/a0FHjxo2TZVlauXJlQnkwGNS6desO2Hvc0NCgiooKLV++XDNnzow/rrjiCknS0qVLNXPmTD3zzDOHrb4AAADo2Trc03vrrbfqxRdf1MqVK/W73/1O9913nyZPnqw5c+bonHPOiV/CrCNmz56tRx55RAsXLozf6U2SlixZokAgoDlz9t3Obvv27QqHw/FrBqemprZ6M4yKigrddtttOu200/T1r39do0eP7nD9AAAA0Lt0OPReccUVuuKKK7Rjxw698MILevHFF/XJJ5/o008/1Z133qnTTjtNc+bM0VlnnXXAE85aM3r0aF122WVavHixbrjhBk2dOlWbNm3SokWLNGXKlITQe9VVV6m4uFjr16+XJHk8Hs2aNavFNpuu3jB48OBW5wMAAKClP/3pET322B/1l788p8cff1TvvfeOPB6Pzj//Il177XdVWlqi3/3uN/r000+UkpKi6667VhdeeKkk6etfn6M9e3a3ut0HHviDJk8+vtV5naHDobfJoEGDdMMNN+iGG27Q6tWrtXTpUv3973/Xm2++qbfeekvp6emaMWOG7rrrrnZt95ZbblFRUZGefvppLV++XLm5ubr88ss1d+5cmWbPu/YbAACAk/3ylzdryJBh+u53b9S///2uFi78k7KysvTCC/+nyZO/ou9970a9/voruueeezR06EiNHz9Jc+f+RIGAP2E7Tz/9F3355QZlZ+d0af0N27YP++UJLMvS+++/r+eee04vvfSSDMPQF198cbh30+nKymo7dftut6nc3HRVVtb3uDMcuxttkxxtkxxtkxxt0zraJTnaJrn2tE0gEtCe+rIuqtmB9UvPV6q7/dfPberpPe+8C/Wzn90qKXbX24svPk9lZaW6/vof6PLLr5IkBQL1mjPnbE2bNkO33PLLFtt6881/6Be/uEnXXvtdXXXVtYf0eprk52e2ablD7ult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HI/QCwAAAMcj9AIAAMDxCL0AAABwPMO2bbu7KwEAAAB0Jnp6AQAA4HiEXgAAADgeoRcAAACOR+gFAACA4xF6AQAA4HiEXgAAADgeoRcAAACO5+7uChyJLMvSE088oaeeekrFxcXKy8vTOeeco7lz5yotLa27q9fptmzZoqVLl+q9997T9u3bFQwGNXjwYM2aNUtXXnllQhssWLBADz74YKvb+dnPfqbvfOc7XVXtLjN69OhWy9PS0rRixYqEss2bN+u3v/2tPvroI4XDYR199NG68cYbddJJJ3VFVbvUgY4FSXK73VqzZs1Bl+3tx80jjzyiNWvWaM2aNdq5c6eKior05ptvJl3+888/1+9+9zt9/vnnMgxDkyZN0k9/+lONHTu2xbIlJSW699579c4778jv92vkyJG67rrrdM4553TmSzos2touwWBQL7zwgt566y2tX79ee/fuVX5+viZOnKgf/OAHGjFiRMLyO3fu1FlnndXqPo866igtW7asU17P4dSeY+amm27S3/72t1bn3X///Zo1a1ZCWSgU0sMPP6wXXnhBpaWl6tevn772ta/puuuuk8fjOeyv5XBra9sc6Dho8t///d8677zzDrp8bzhu2vM+LbXvvai2tlb33XefXnvtNVVVVWnw4MG67LLL9M1vflOGYXTq6yL0doP58+dr0aJFmjFjhq655hpt2rRJixYt0tq1a/X444/LNJ3dAf/cc8/pySef1LRp0zRnzhy53W598MEHuu+++/Tyyy9ryZIlSklJSVjn5ptvVm5ubkLZuHHjurLaXer444/XJZdcklC2/xvI9u3b9c1vflMul0vXXnutMjIy9Mwzz+jaa6/VH//4R5188sldWeVON2PGDA0ePLhF+fr16/WnP/1JZ555Zot5Tjxu/ud//kc5OTk6+uijVVtbe8BlP/vsM11xxRUqLCzUD3/4Q0nS4sWL9a1vfUtPPfVUwgesqqoqfetb31JFRYWuuuoq9evXT8uWLdOPfvQj+f1+XXTRRZ36ug5VW9tl586dmjdvno477jhddNFFKigo0M6dO/XXv/5Vr732mh599FGdeOKJLdabMWOGZsyYkVCWlZV12F9HZ2jPMdPkN7/5TYuyCRMmtCj70Y9+pDfeeEMXXXSRJk2apBUrVuj+++/X9u3bdffddx9y3TtbW9smLy+v1TaRpNtvv10N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sL72ta/ptttua/N6RUVFkqTKysrOqlqP4vF44seOtO8r69aGMDSVtfYVklNEIhG98MILysnJaXE5oAM5ko6bpmOkta8L9z9G2nI8tTZMordbs2aNrrnmGmVmZuqJJ55o199M//795XK5johjSWr9b6egoCDpMKqSkhJH/w9q74fuJr3xuDnQ+3R73ouys7OVkpLS6rKhUEiVlZWd/n+G0NvFxo0bJ8uytHLlyoTyYDCodevW9fpriLZH0w0ELrzwQt15553tuij11q1bJbV+0psTBYNBlZSUqE+fPpKkUaNGyev16rPPPmuxbFOZk4+lt956S3v37tV5553Xrg+JR9JxM378eElqtVf7s88+k2EYOuaYYyTF3rgKCwtbPVmp6Xhq2p5TrFmzRldffbXS09O1cOHCeKhrqx07digajcb/Jp2utb+d8ePHq6SkRLt3705Ydvfu3SotLXXs/6BQKKQXXnhBeXl5B71hxf5623FzsPfp9rwXmaapo48+Wl988UWLjr+VK1fKtu1OP2YIvV1s9uzZMgyjxVifJUuWKBAIaM6cOd1Us6714IMP6sEHH9T555+v+fPnt3pDjkgk0urFwnfv3q2nnnpKOTk5rZ6Z3psl+/R/3333KRKJxG/AkJ6erjPPPFMffvih1q1bF1+uvr5ezz77rIYOHdrqheSdoqmX5etf/3qLeUficdOaIUOGaNy4cXrllVcSelZKSkr0yiuv6MQTT1R+fn68/Ktf/aq2b9+ecDeqaDSqxYsXKysrS6effnqX1r8zrV27Vtdcc43S0tL0xBNPHPCyVa39TVqWpfvuu0+SWr0pSm/l9/vjX0k3t3btWr3yyisaMWJEwg1imk5m2v/9rOlnp76fvfnmm6qoqND555+f9K5zTjhu2vI+3d73onPPPVeBQEBPP/10wnYWLlwot9sdvyRaZ+FEti42evRoXXbZZVq8eLFuuOEGTZ06NX5HtilTpjj2n0RzTz75pBYsWKABAwbo5JNPjl/rsUnfvn11yimnyO/366yzztL06dM1fPhwZWdna8uWLXrmmWfk9/t17733Om7M2MMPP6zPP/9cJ5xwgvr37y+/36+3335bH3zwgSZOnKgrrrgivuxPfvITvf/++7rmmmt01VVXKT09Xc8884xKSkr0yCOPdPrtHLtLSUmJ/vnPf2rChAmt3rLZ6cfN888/r127dkmSKioqFA6H9dBDD0mKnTxzwQUXxJe99dZb9e1vf1uXXXaZLr/8ckmxO7LZtq2bbropYbv/8R//oVdffVU/+clPdPXVV6uwsFDLli3TqlWrdMcddygjI6NrXmAHtbVdiouLdfXVV6u6ulpXXHGFPv30U3366acJ25oxY0b8Nqvz5s1TXV2dJk2apP79+6uyslKvvvqq1qxZo7POOqvFbXl7ora2zbZt23TdddfprLPO0tChQ5Wamqp169bpueeek8vl0q9//euE7Z5xxhk688wz9dhjj6m2tlbHHnusPvvsMz377LM677zzdPzxx3fp6+yI9vw9NWnL0Ibefty09X1aat970cUXX6znnntOd999t4qLizVixAi9/fbbev311/W9731PAwcO7NTXZdi2bXfqHtBCNBrVwoUL9fTTT6u4uFi5ubmaPXu25s6d6/gzyqUD39tdkqZMmaJFixYpFArptttu08qVK7Vnzx75/X7l5uZq8uTJuvbaax3Zk/mPf/xDf/3rX7VhwwZVVVXJ5XJpyJAhOuecc3T11Ve3OMlm06ZNrd7v3Gm3IG7uD3/4g373u9/p9ttvb3GBc0mOP26uuOIKffjhh63Oa/rbaW7FihW677774kOqJk+erB//+MfxoQ3NlZSU6Le//a3eeecd+f1+jRw5Utddd12n974cDm1tlw8++EDf/va3D7itN954I/7m+8wzz2jp0qXavHmzqqur5fF4dNRRR+n888/XN7/5zV5x2/i2tk1ZWZl+85vfaNWqVSotLVUwGFR+fr5OOOEE/cd//IdGjBjRYv1gMKiHHnpIL774okpLS1VYWKivfe1r+o//+I+kvaA9SXv/nnbv3q1p06Zp4sSJeuqpp5Jut7cfN219n27Snveimpoa3XfffXrttddUVVWlwYMH61vf+pYuu+yyTu+sIfQCAADA8Xr2Rw0AAADgMCD0AgAAwPEIvQAAAHA8Qi8AAAAcj9ALAAAAxyP0AgAAwPEIvQAAAHA8Qi8AAAAcj9ALAL3U888/r9GjR2v58uVdut/vf//7Ovnkk1VfX9+l+wWAQ0HoBYAeZufOnRo9erSuuOKKpMsEg0Hdd999Gj9+vM4444yuq5ykH/zgByovL9ejjz7apfsFgENB6AWAXuivf/2rdu/ereuvv77L933MMcfo1FNP1WOPPabKysou3z8AdAShFwB6ob/+9a/Kycnp8l7eJuedd54CgYCef/75btk/ALQXoRcAepAFCxborLPOkiR9+OGHGj16dPxx0003xcu3bt2qmTNnyuPxtNjGtGnTNHr0aNm2rYULF2r27NkaP368TjvtNN1xxx2qqalpsU4oFNKTTz6piy66SCeccIImTpyoadOm6frrr9dLL73UYvnp06crJSVFS5YsOcwtAACdw93dFQAA7DN27FidffbZevXVV9W3b1+ddtpp8XnHHXecJOmtt96SJE2ZMuWA27r99tu1ZMkSTZkyRaNGjdJHH32kRYsW6cMPP9Rf/vIXZWRkxJf96U9/qldffVXp6ek6/vjjlZGRoZKSEn3yySfy+/366le/mrDt9PR0jRs3Th9//LF27NihQYMGHa4mAIBOQegFgB5k+vTpGjNmjF599VUNHz5cd999d4tlPvnkE0nS+PHjD7itF154QU899ZTGjRsnSaqvr9f3v/99vf/++7r//vt16623SpJ27NihV199VUVFRXruueeUm5sb30YwGNTatWtb3f6ECRP08ccf68MPPyT0AujxGN4AAL3M+vXrZZqmhgwZcsDlLr/88njglWK9s/PmzZNhGHr22WcVDAYlKX4y2tixYxMCryT5fD5NmjSp1e0PHz5ckvTFF190+LUAQFch9AJAL1JfX6+GhgZlZWXJMIwDLjt79uwWZSNHjtSYMWPk9/vjPbjDhw9XWlqa3n77bT366KMqKSlpU12ys7MliSs4AOgVCL0A0IvU1dVJivXaHkxRUdEBy0tLSyVJGRkZuv322+XxePTf//3fOv3003X22WfrF7/4RXwoRWuaxgS3dmIcAPQ0hF4A6EWagubhvhvaueeeqzfeeEN33HGHZs2apdraWj399NP61re+1eq4Ykmqra2VJGVlZR3WugBAZyD0AkAvkp6erpSUFNXU1MiyrAMuW1xc3Gr5rl27JEkFBQUJ5Xl5ebr44ot1//3367333tMf//hHZWRk6LHHHtPGjRtbbKeph3f/ccAA0BMRegGgh2m69m4kEml1/pgxY2RZlrZt23bA7bz88sstyjZt2qQvvvhCaWlpGjt2bNJ1DcPQ6aefHr/5RWuhd9OmTZJ0wO0AQE9B6AWAHiY3N1cej0c7duxQNBptMb/per2rVq064HYWL16ccLmxQCCgO+64Q7Zt66KLLlJKSookae3atXrttdcUCoUS1q+qqtLnn38uSerfv3+L7a9cuVLSwa8XDAA9AdfpBYAexuv16tRTT9Vbb72l888/X0cffbQ8Ho8mT56siy66SGeccYb+9Kc/6cMPP9R5552XdDvnnXeeLrnkEp1wwgnKzMzUxx9/rLKyMh111FH64Q9/GF9u165duvHGG5WZmalx48apb9++qq2t1UcffaT6+nqdeeaZLS5bVl9fr9WrV2v48OFcoxdAr0BPLwD0QHfeeafOP/98VVVVadmyZXr22Wf10UcfSYr1rA4dOrTV3tnm/uu//ks//vGPtWvXLr3xxhuSpMsuu0xPPvmkMjMz48tNnDhRP/rRj3TMMcdoy5YteuWVV7R69WqNHj1a8+fP14IFC1ps+/XXX1cwGNQll1xymF85AHQOw7Ztu7srAQBon4ULF2r+/Pl64IEHdPbZZyfMmzZtmoqLi7V+/fpO2/93vvMdffLJJ3rrrbc4kQ1Ar0BPLwD0Qt/4xjc0YMAA/e///m+X73vNmjV69913dfXVVxN4AfQahF4A6IV8Pp9++MMfavXq1Xrrrbe6dN+///3v1adPH1177bVdul8AOBQMbwAAh+mK4Q0A0NsQegEAAOB4DG8AAACA4xF6AQAA4HiEXgAAADgeoRcAAACOR+gFAACA4xF6AQAA4HiEXgAAADgeoRcAAACOR+gFAACA4/1/9ZA5gQpr/e4AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "time_drive.table.mpl(y=[\"mx\", \"my\", \"mz\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Derived quantities using callbacks\n", "\n", "We can also compute derived quantities for each time step and visualise them. As an example, we compute the topological charge density. Discretisedfield provides a function for this in `discretisedfield.tools`.\n", "\n", "First, we compute the topolgical charge density for the final magnetisation state and plot it." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "tags": [ "nbval-ignore-output" ] }, "outputs": [ { "data": { "image/png": "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GDYupaWlSExMxL///W/U1NSgZ8+eWLx4sfYhW46mpWP17bffYu7cucJ1HTp0CF26dNH+W6lUYv369di7dy/KysoQFBSEKVOm4I9//KPwZm97Zehxpau9VIDtbGNFhnPZAJuIiIiIyBJcax4EEREREZGFMcAmIiIiIjIjBthERERERGbEAJuIiIiIyIwYYBMRERERmREDbCIiIiIiM2KATURERERkRgywiYiIiIjMiAE2EREREZEZMcAmIjJScnIyevfujYKCAlt3pZm3334bffv2xbVr12zdFSIil8MAm4jICL/++is+/vhjPProowgPD7d1d5pZvHgxAGDt2rW27QgRkQtigE1EZIQNGzagpqYGS5YssXVXdAoMDMSkSZOQk5ODH3/80dbdISJyKQywiYgMpFAosGfPHoSFhSEiIsLW3ZE0YcIEaDQa7Nq1y9ZdISJyKQywicjpPffccwgPD8ff/va3ZnU//fQToqOjER0djStXrrRofQcPHkRVVRXGjRunsz48PBwjR45EfX09Nm3ahEcffRSRkZEYNmwY3nvvPahUqmZtRo4cqZ1qsmPHDowfPx59+/bFyJEjsXnzZmg0GgBAfn4+nnzyScTExCA6Ohp/+tOfUFJSorMfAwYMQHBwMHJycqBUKlu0b0REZDoG2ETk9FauXIlOnTrhH//4B44fP64tV6vVePHFF1FTU4NXX30VoaGhLVrfkSNHAAAxMTHC5V544QWkpKTgnnvuwUMPPYTq6mqkpqbi1VdflWyzevVq/O1vf0NwcDBiY2Nx69YtJCYmIikpCSdPnsSsWbNQVlaG2NhYBAQE4PDhw5g/fz5qa2ubrUsmk+GBBx7A7du38f3337do34iIyHQMsInI6bVt2xbvvvsuAODll1/G7du3AdzNAnLu3DmMGjUK06ZNa/H6Tp48CQ8PD+H0kJKSEly8eBFffPEFNmzYgA0bNuCzzz5DmzZtsHfvXhQXF+tsd+DAAezduxebNm3Chg0bkJmZCS8vL2zZsgUvvfQSXn75ZezevRtr167Fvn37MGjQIBQXF2P//v0619e3b18AwIkTJ1q8f0REZBoG2ETkEgYNGoQFCxbg+vXreOONN/Ddd99h06ZNCAgIwFtvvdXi9dy8eRO//vorOnXqhFatWgmXXb58OQICArT/7tq1KyZMmAAA+O6773S2WbZsGbp166b997333othw4ZBoVCgU6dOmDlzprbOy8sLc+fOBSAdQPfo0QMA8MMPP7Rg74iIyBw8bN0BIiJree6553Ds2DEcOHAA//nPf6DRaPDOO++gffv2LV7HzZs3Ady9Ki7i6emJBx98sFl54zSUGzdu6Gz30EMPNSvr2rUrAGDIkCGSdVLra+xnRUWFsL9ERGQ+vIJNRC7Dy8sLa9asAQDcuXMHjz/+OIYOHWrQOqqqqgAAcrlcuFzHjh3h7u7erLyxna4bHQEgKCioWZmvr6/eOqn1+fn5AQAqKyuF/SUiIvNhgE1ELuXAgQPa/75w4QLq6+sNat+6dWsAQHV1tXA5NzfjTq+idsass/ELQZs2bYzqDxERGY4BNhG5jO+++w6bN29GQEAAYmNjkZeXh5SUFIPW0aFDBwDArVu3LNBD82u8cu3v72/jnhARuQ4G2ETkEu7cuYM///nPqK+vx+rVq/Hee++hffv2SElJwenTp1u8ng4dOiAgIADXr1+HQqGwYI/No7CwEADQp08fG/eEiMh1MMAmIpfw17/+FSUlJZg9ezYefvhhdOzYEatWrUJdXR1eeukl1NTUtHhdAwYMQH19Pc6fP2/BHpvHmTNnAAAPPPCAjXtCROQ6GGATkdM7cOAAsrOz0bNnT7z00kva8kceeQTTp09HUVER3n777Ravb/jw4QCA3Nxcc3fVrDQaDU6cOIE2bdqgf//+tu4OEZHLYIBNRE6ttLQUb7zxBjw9PZGYmNgsd/Vf/vIXhIaGIisrC19++WWL1jl27Fi0bt0a+/bts0SXzebkyZP45ZdfMHHiRHh7e9u6O0RELkOm0Wg0tu4EEZGjWb16NdLS0vDPf/4TkZGRtu6OTq+//joyMjKwd+9e9OrVy9bdISJyGbyCTURkhCVLlsDX1xebNm2ydVd0Kisrw549ezBhwgQG10REVsYAm4jICB06dMATTzyBL774AgUFBbbuTjObN28GcPfplUREZF2cIkJEREREZEa8gk1EREREZEYMsImIiIiIzIgBNhERERGRGTHAJiIiIiIyIwbYRERERERmxACbiIiIiMiMGGATEREREZkRA2wiIiIiIjNigE1EREREZEb/D2TMsPibv9B6AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "final_magnetisation = time_drive[-1]\n", "top_charge_last_step = df.tools.topological_charge_density(final_magnetisation.sel(\"z\"))\n", "\n", "top_charge_last_step.mpl.scalar(cmap=\"Blues\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To compute a function for each time step, we use the `register_callback` method of `Drive`. We can pass in a function that will be called for each element of the drive. The function is only evaluated once we access an element of the drive. The `register_callback` method returns a new `Drive` object so that we still have access to the original data if required.\n", "\n", "In this example we write a callback function that gets one magnetisation `m` and then selects a 2D slice normal to the `z` direction and computes the topological charge density." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "tags": [] }, "outputs": [], "source": [ "def top_charge_plane(m):\n", " return df.tools.topological_charge_density(m.sel(\"z\"))\n", "\n", "\n", "top_charge = time_drive.register_callback(top_charge_plane)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now plot the data of the new `top_charge` drive object. We manually compute suitable colour limits based on the topological charge in the final state to avoid changes of the colour range when moving the slider. (The plotting function always has only access to the current frame and would re-compute a suitable but changing colour range for each frame, which makes it difficult to judge the changes in topological charge.)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "tags": [ "nbval-ignore-output" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9187c734fca54fb198f1c287a2ff0739", "version_major": 2, "version_minor": 0 }, "text/plain": [ "BokehModel(combine_events=True, render_bundle={'docs_json': {'441ecef5-8bbd-40ab-886e-341b9502c540': {'version…" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c_min = top_charge_last_step.array.min()\n", "c_max = top_charge_last_step.array.max()\n", "\n", "top_charge.hv.scalar(kdims=[\"x\", \"y\"], clim=(c_min, c_max))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Conversion to `xarray.DataArray`\n", "\n", "The drive object also provides a method to convert all magnetisation data into a single `DataArray` suitable for further post-processing outside Ubermag." ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "tags": [ "nbval-ignore-output" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'field' (t: 200, x: 75, y: 25, z: 1, vdims: 3)> Size: 9MB\n",
       "array([[[[[     -0.        ,       0.        ,       0.        ]],\n",
       "\n",
       "         [[     -0.        ,       0.        ,       0.        ]],\n",
       "\n",
       "         [[     -0.        ,      -0.        ,       0.        ]],\n",
       "\n",
       "         ...,\n",
       "\n",
       "         [[      0.        ,       0.        ,       0.        ]],\n",
       "\n",
       "         [[      0.        ,       0.        ,      -0.        ]],\n",
       "\n",
       "         [[     -0.        ,       0.        ,      -0.        ]]],\n",
       "\n",
       "\n",
       "        [[[     -0.        ,       0.        ,      -0.        ]],\n",
       "\n",
       "         [[      0.        ,       0.        ,       0.        ]],\n",
       "\n",
       "         [[      0.        ,      -0.        ,      -0.        ]],\n",
       "...\n",
       "         [[ 153709.90367316,   90849.48961732,  551832.9781275 ]],\n",
       "\n",
       "         [[ 153335.36567877,  143941.16461676,  540526.78634914]],\n",
       "\n",
       "         [[ 154519.39825581,  217376.75131923,  515044.75878176]]],\n",
       "\n",
       "\n",
       "        [[[ 226300.61182178, -278646.99318418,  455569.84785926]],\n",
       "\n",
       "         [[ 226637.66389477, -208736.80814222,  491390.18532213]],\n",
       "\n",
       "         [[ 228536.19151912, -155488.55738163,  509896.57548302]],\n",
       "\n",
       "         ...,\n",
       "\n",
       "         [[ 227688.03582616,   89413.40179957,  525892.95671291]],\n",
       "\n",
       "         [[ 226284.55415984,  142651.47198172,  514631.76941395]],\n",
       "\n",
       "         [[ 226432.93136012,  214961.84186728,  488793.95877679]]]]])\n",
       "Coordinates:\n",
       "  * x        (x) float64 600B 1e-09 3e-09 5e-09 ... 1.45e-07 1.47e-07 1.49e-07\n",
       "  * y        (y) float64 200B 1e-09 3e-09 5e-09 ... 4.5e-08 4.7e-08 4.9e-08\n",
       "  * z        (z) float64 8B 1e-09\n",
       "  * vdims    (vdims) <U1 12B 'x' 'y' 'z'\n",
       "  * t        (t) float64 2kB 1e-12 2e-12 3e-12 4e-12 ... 1.98e-10 1.99e-10 2e-10\n",
       "Attributes:\n",
       "    drive_number:  1\n",
       "    date:          2024-08-09\n",
       "    time:          18:15:59\n",
       "    driver:        TimeDriver\n",
       "    adapter:       oommfc\n",
       "    t:             2e-10\n",
       "    n:             200\n",
       "    n_threads:     None
" ], "text/plain": [ " Size: 9MB\n", "array([[[[[ -0. , 0. , 0. ]],\n", "\n", " [[ -0. , 0. , 0. ]],\n", "\n", " [[ -0. , -0. , 0. ]],\n", "\n", " ...,\n", "\n", " [[ 0. , 0. , 0. ]],\n", "\n", " [[ 0. , 0. , -0. ]],\n", "\n", " [[ -0. , 0. , -0. ]]],\n", "\n", "\n", " [[[ -0. , 0. , -0. ]],\n", "\n", " [[ 0. , 0. , 0. ]],\n", "\n", " [[ 0. , -0. , -0. ]],\n", "...\n", " [[ 153709.90367316, 90849.48961732, 551832.9781275 ]],\n", "\n", " [[ 153335.36567877, 143941.16461676, 540526.78634914]],\n", "\n", " [[ 154519.39825581, 217376.75131923, 515044.75878176]]],\n", "\n", "\n", " [[[ 226300.61182178, -278646.99318418, 455569.84785926]],\n", "\n", " [[ 226637.66389477, -208736.80814222, 491390.18532213]],\n", "\n", " [[ 228536.19151912, -155488.55738163, 509896.57548302]],\n", "\n", " ...,\n", "\n", " [[ 227688.03582616, 89413.40179957, 525892.95671291]],\n", "\n", " [[ 226284.55415984, 142651.47198172, 514631.76941395]],\n", "\n", " [[ 226432.93136012, 214961.84186728, 488793.95877679]]]]])\n", "Coordinates:\n", " * x (x) float64 600B 1e-09 3e-09 5e-09 ... 1.45e-07 1.47e-07 1.49e-07\n", " * y (y) float64 200B 1e-09 3e-09 5e-09 ... 4.5e-08 4.7e-08 4.9e-08\n", " * z (z) float64 8B 1e-09\n", " * vdims (vdims)