{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Simulating an Anisotropic Grain Structure" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import fidimag\n", "from scipy.spatial import cKDTree\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we set up a simple test system to show how to simulate magnetic grains which have different anisotropy orientations and strengths." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "A=1.3e-11\n", "Ms=8.6e5\n", "n = 40\n", "d = 5\n", "\n", "mesh = fidimag.common.CuboidMesh(nx=n, ny=n, nz=1, dx=d, dy=d, dz=d, unit_length=1e-9, periodicity=(False, False, False))\n", "sim = fidimag.micro.Sim(mesh, name=\"Grains\", driver='steepest_descent')\n", "sim.alpha = 1.0\n", "# Create positions to be grain centres, and create a cKDTree to \n", "# perform Voronoi Tesselation\n", "np.random.seed(10)\n", "Ngrains = 15\n", "grain_centres = np.random.uniform(0, n*d, (Ngrains, 2))\n", "voronoi_kdtree = cKDTree(grain_centres)\n", "\n", "# Define Anisotropy Strength\n", "Ku = 1e6\n", "# Generate random anisotropy axes\n", "axes = np.random.uniform(-1, 1, (Ngrains, 3))\n", "# Weight them towards +z - assume grains oriented along field cooled direction\n", "axes[:, 2] += 1.0\n", "# Normalise\n", "axes /= np.linalg.norm(axes, axis=1)[:, np.newaxis]\n", "# Generate a normal distribution of anisotropy strengths:\n", "strengths = np.random.normal(Ku, Ku*0.2, Ngrains)\n", "\n", "# We then use the cKDTree in two functions. We get the x, y position\n", "# of each micromagnetic cell, and query the tree for the region that\n", "# the cell sits in. The functions then return the axis and strength\n", "# at that region index.\n", "\n", "def K_axis(pos):\n", " x, y, z = pos\n", " _, test_point_regions = voronoi_kdtree.query(np.array([[x, y]]), k=1)\n", " region = test_point_regions[0]\n", " return axes[region]\n", "\n", "def K_mag(pos):\n", " x, y, z = pos\n", " _, test_point_regions = voronoi_kdtree.query(np.array([[x, y]]), k=1)\n", " region = test_point_regions[0]\n", " return strengths[region]" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "sim.set_Ms(Ms)\n", "sim.set_m((0, 0, 1), normalise=True)\n", "\n", "anisotropy = fidimag.micro.UniaxialAnisotropy(K_mag, K_axis)\n", "sim.add(anisotropy)\n", "sim.add(fidimag.micro.UniformExchange(A))\n", "sim.add(fidimag.micro.Demag(pbc_2d=True))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To check that this looks sensible, we plot the strength of the anisotropy across the whole sample in each direction:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#NBVAL_IGNORE_OUTPUT\n", "import matplotlib.pyplot as plt\n", "from mpl_toolkits.axes_grid1 import ImageGrid\n", "\n", "strength_x = anisotropy._axis[0::3].reshape(n, n) * anisotropy._Ku.reshape(n, n)\n", "strength_y = anisotropy._axis[1::3].reshape(n, n) * anisotropy._Ku.reshape(n, n)\n", "strength_z = anisotropy._axis[2::3].reshape(n, n) * anisotropy._Ku.reshape(n, n)\n", "\n", "maxs = np.max([np.max(np.abs(strength_x)),\n", " np.max(np.abs(strength_y)),\n", " np.max(np.abs(strength_z))])\n", "\n", "\n", "\n", "fig = plt.figure(figsize=(5, 3))\n", "\n", "grid = ImageGrid(fig, 111, # as in plt.subplot(111)\n", " nrows_ncols=(1,3),\n", " axes_pad=0.15,\n", " share_all=True,\n", " cbar_location=\"right\",\n", " cbar_mode=\"single\",\n", " cbar_size=\"7%\",\n", " cbar_pad=0.15,\n", " )\n", "\n", "axes = [axis for axis in grid]\n", "\n", "\n", "axes[0].imshow(strength_x, origin='lower', cmap='RdBu', vmin=-maxs, vmax=maxs, extent=[0, n*d, 0, n*d])\n", "axes[1].imshow(strength_y, origin='lower', cmap='RdBu', vmin=-maxs, vmax=maxs, extent=[0, n*d, 0, n*d])\n", "im = axes[2].imshow(strength_z, origin='lower', cmap='RdBu', vmin=-maxs, vmax=maxs, extent=[0, n*d, 0, n*d])\n", "axes[2].cax.colorbar(im)\n", "axes[2].cax.toggle_label(True)\n", "\n", "axes[0].set_title(\"$K_x$\")\n", "axes[1].set_title(\"$K_y$\")\n", "axes[2].set_title(\"$K_z$\")\n", "\n", "plt.savefig(\"Anisotropy.png\", dpi=600)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that we have a granular structure in the anisotropy. We now simply minimise the system and plot the magnetisation:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#0 max_tau=0.0001 max_dm=0.000171 \n", "#2000 max_tau=0.0001 max_dm=0.000163 \n", "#4000 max_tau=0.0001 max_dm=0.000137 \n", "#6000 max_tau=0.0001 max_dm=0.000142 \n", "#8000 max_tau=0.0001 max_dm=0.000143 \n", "#10000 max_tau=0.0001 max_dm=0.000131 \n", "#11820 max_tau=0.0001 max_dm=0.0001 \n", "Done\n" ] } ], "source": [ "#NBVAL_IGNORE_OUTPUT\n", "sim.driver.minimise(max_steps=20000, stopping_dm=1e-4, initial_t_step=1e-4, log_every=2000)\n", "print('Done')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The remanent Magnetisation in the z-direction is then:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#NBVAL_IGNORE_OUTPUT\n", "fidimag.common.plot(sim)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "681223.4133387426\n" ] } ], "source": [ "remanence = np.mean(sim.spin[2::3])*Ms\n", "print(remanence)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.2" } }, "nbformat": 4, "nbformat_minor": 2 }