Fidimag
Author: Marijan Beg
Date: 26/02/2016
This notebook can be downloaded from the github repository, found here.
The domain wall profile is computed in a one-dimenaional domain of \(L=500 \,\text{nm}\) length.
Material paremeters of the simulated material are:
exchange energy constant \(A = 1.3 \times 10^{-11} \,\text{J/m}\),
magnetisation saturation \(M_\text{s} = 8.6 \times 10^{5} \,\text{A/m}\),
anisotropy constant \(K_{1} = 1.86 \times 10^{5} \,\text{J/m}^{3}\) with \((1, 0, 0)\) axis,
anisotropy constant \(K_{2} = -0.92 \times 10^{5} \,\text{J/m}^{3}\) with \((0, 0, 1)\) axis.
[1]:
from fidimag.micro import Sim from fidimag.common import CuboidMesh from fidimag.micro import UniformExchange, UniaxialAnisotropy import numpy as np import matplotlib.pyplot as plt %matplotlib inline
Firstly, the mesh is created.
[2]:
# Mesh dimensions. L = 500 # diameter (nm) # Mesh discretisation. dx = dy = dz = 2 # nm mesh = CuboidMesh(nx=int(L/dx), ny=1, nz=1, dx=dx, dy=dy, dz=dz, unit_length=1e-9)
The simulation object is created, parameters set, and energies added.
[3]:
# NBVAL_IGNORE_OUTPUT Ms = 8.6e5 # magnetisation saturation (A/m) A = 1.3e-11 # exchange energy constant (J/m) K1 = 1.86e5 # anisotropy energy constant (J/m**3) K2 = -0.92e5 # anisotropy energy constant (J/m**3) alpha = 0.5 # Gilbert damping gamma = 2.211e5 # gyromagnetic ration (m/As) # Create simulation object. sim = Sim(mesh) # Set simulation parameters. sim.Ms = Ms sim.driver.alpha = alpha sim.driver.gamma = gamma # Add energies. sim.add(UniformExchange(A=A)) sim.add(UniaxialAnisotropy(K1, axis=(1,0,0))) sim.add(UniaxialAnisotropy(K2, axis=(0,0,1))) # Since the magnetisation dynamics is not important in this stage, # the precession term in LLG equation can be set to artificially zero. sim.driver.do_precession = False
In order to obtain the domain wall as the relaxed state, the system must be appropriatelly initialised. In this case, the initial magnetisation is set to be in \((0, 0, 1)\) direction for \(x < 0.4L \,\text{nm}\), in \((-1, 0, 0)\) direction for \(0.4L \,\text{nm} < x < 0.6L \,\text{nm}\), and in \((0, 0, 1)\) direction for \(x > 0.6L \,\text{nm}\).
[4]:
def m_init(pos): x = pos[0] if x < 0.45*L: return (1,0,0) elif x > 0.55*L: return (-1,0,0) else: return (0,1,0)
In the next step, the magnetisation is initialised, and the system is relaxed.
[5]:
# NBVAL_IGNORE_OUTPUT # Initialise the system. sim.set_m(m_init) # Relax the system to its equilibrium state. sim.driver.relax(dt=1e-13, stopping_dmdt=0.01, max_steps=5000, save_m_steps=None, save_vtk_steps=None)
#1 t=1e-13 dt=1e-13 max_dmdt=2.97e+04 #2 t=2e-13 dt=1e-13 max_dmdt=2.79e+04 #3 t=3e-13 dt=1e-13 max_dmdt=2.6e+04 #4 t=4e-13 dt=1e-13 max_dmdt=2.41e+04 #5 t=5e-13 dt=1e-13 max_dmdt=2.21e+04 #6 t=6e-13 dt=1e-13 max_dmdt=2.02e+04 #7 t=7e-13 dt=1e-13 max_dmdt=1.83e+04 #8 t=8e-13 dt=1e-13 max_dmdt=1.66e+04 #9 t=9e-13 dt=1e-13 max_dmdt=1.5e+04 #10 t=1e-12 dt=1e-13 max_dmdt=1.36e+04 #11 t=1.1e-12 dt=1e-13 max_dmdt=1.22e+04 #12 t=1.2e-12 dt=1e-13 max_dmdt=1.1e+04 #13 t=1.3e-12 dt=1e-13 max_dmdt=9.97e+03 #14 t=1.4e-12 dt=1e-13 max_dmdt=9.01e+03 #15 t=1.5e-12 dt=1e-13 max_dmdt=8.16e+03 #16 t=1.6e-12 dt=1e-13 max_dmdt=7.4e+03 #17 t=1.7e-12 dt=1e-13 max_dmdt=6.73e+03 #18 t=1.8e-12 dt=1e-13 max_dmdt=6.44e+03 #19 t=1.9e-12 dt=1e-13 max_dmdt=6.27e+03 #20 t=2e-12 dt=1e-13 max_dmdt=6.1e+03 #21 t=2.1e-12 dt=1e-13 max_dmdt=5.93e+03 #22 t=2.2e-12 dt=1e-13 max_dmdt=5.76e+03 #23 t=2.3e-12 dt=1e-13 max_dmdt=5.58e+03 #24 t=2.4e-12 dt=1e-13 max_dmdt=5.41e+03 #25 t=2.5e-12 dt=1e-13 max_dmdt=5.24e+03 #26 t=2.6e-12 dt=1e-13 max_dmdt=5.07e+03 #27 t=2.7e-12 dt=1e-13 max_dmdt=4.91e+03 #28 t=2.82e-12 dt=1.23e-13 max_dmdt=4.73e+03 #29 t=2.95e-12 dt=1.23e-13 max_dmdt=4.55e+03 #30 t=3.07e-12 dt=1.23e-13 max_dmdt=4.37e+03 #31 t=3.19e-12 dt=1.23e-13 max_dmdt=4.2e+03 #32 t=3.32e-12 dt=1.23e-13 max_dmdt=4.04e+03 #33 t=3.44e-12 dt=1.23e-13 max_dmdt=3.88e+03 #34 t=3.56e-12 dt=1.23e-13 max_dmdt=3.74e+03 #35 t=3.69e-12 dt=1.23e-13 max_dmdt=3.6e+03 #36 t=3.81e-12 dt=1.23e-13 max_dmdt=3.47e+03 #37 t=3.93e-12 dt=1.23e-13 max_dmdt=3.35e+03 #38 t=4.06e-12 dt=1.23e-13 max_dmdt=3.23e+03 #39 t=4.18e-12 dt=1.23e-13 max_dmdt=3.12e+03 #40 t=4.3e-12 dt=1.23e-13 max_dmdt=3.02e+03 #41 t=4.43e-12 dt=1.23e-13 max_dmdt=2.92e+03 #42 t=4.55e-12 dt=1.23e-13 max_dmdt=2.83e+03 #43 t=4.74e-12 dt=1.86e-13 max_dmdt=2.77e+03 #44 t=4.92e-12 dt=1.86e-13 max_dmdt=2.71e+03 #45 t=5.11e-12 dt=1.86e-13 max_dmdt=2.64e+03 #46 t=5.3e-12 dt=1.86e-13 max_dmdt=2.58e+03 #47 t=5.48e-12 dt=1.86e-13 max_dmdt=2.52e+03 #48 t=5.67e-12 dt=1.86e-13 max_dmdt=2.46e+03 #49 t=5.86e-12 dt=1.86e-13 max_dmdt=2.4e+03 #50 t=6.04e-12 dt=1.86e-13 max_dmdt=2.34e+03 #51 t=6.23e-12 dt=1.86e-13 max_dmdt=2.29e+03 #52 t=6.41e-12 dt=1.86e-13 max_dmdt=2.24e+03 #53 t=6.6e-12 dt=1.86e-13 max_dmdt=2.18e+03 #54 t=6.79e-12 dt=1.86e-13 max_dmdt=2.13e+03 #55 t=6.97e-12 dt=1.86e-13 max_dmdt=2.09e+03 #56 t=7.26e-12 dt=2.82e-13 max_dmdt=2.03e+03 #57 t=7.54e-12 dt=2.82e-13 max_dmdt=1.97e+03 #58 t=7.82e-12 dt=2.82e-13 max_dmdt=1.9e+03 #59 t=8.1e-12 dt=2.82e-13 max_dmdt=1.85e+03 #60 t=8.38e-12 dt=2.82e-13 max_dmdt=1.79e+03 #61 t=8.67e-12 dt=2.82e-13 max_dmdt=1.74e+03 #62 t=8.95e-12 dt=2.82e-13 max_dmdt=1.69e+03 #63 t=9.23e-12 dt=2.82e-13 max_dmdt=1.64e+03 #64 t=9.51e-12 dt=2.82e-13 max_dmdt=1.61e+03 #65 t=9.8e-12 dt=2.82e-13 max_dmdt=1.59e+03 #66 t=1.01e-11 dt=2.82e-13 max_dmdt=1.56e+03 #67 t=1.04e-11 dt=2.82e-13 max_dmdt=1.54e+03 #68 t=1.06e-11 dt=2.82e-13 max_dmdt=1.51e+03 #69 t=1.11e-11 dt=4.23e-13 max_dmdt=1.48e+03 #70 t=1.15e-11 dt=4.23e-13 max_dmdt=1.45e+03 #71 t=1.19e-11 dt=4.23e-13 max_dmdt=1.42e+03 #72 t=1.23e-11 dt=4.23e-13 max_dmdt=1.39e+03 #73 t=1.28e-11 dt=4.23e-13 max_dmdt=1.36e+03 #74 t=1.32e-11 dt=4.23e-13 max_dmdt=1.33e+03 #75 t=1.36e-11 dt=4.23e-13 max_dmdt=1.3e+03 #76 t=1.4e-11 dt=4.23e-13 max_dmdt=1.27e+03 #77 t=1.45e-11 dt=4.23e-13 max_dmdt=1.25e+03 #78 t=1.49e-11 dt=4.23e-13 max_dmdt=1.22e+03 #79 t=1.53e-11 dt=4.23e-13 max_dmdt=1.2e+03 #80 t=1.57e-11 dt=4.23e-13 max_dmdt=1.18e+03 #81 t=1.61e-11 dt=4.23e-13 max_dmdt=1.16e+03 #82 t=1.68e-11 dt=6.4e-13 max_dmdt=1.15e+03 #83 t=1.74e-11 dt=6.4e-13 max_dmdt=1.13e+03 #84 t=1.81e-11 dt=6.4e-13 max_dmdt=1.11e+03 #85 t=1.87e-11 dt=6.4e-13 max_dmdt=1.09e+03 #86 t=1.93e-11 dt=6.4e-13 max_dmdt=1.08e+03 #87 t=2e-11 dt=6.4e-13 max_dmdt=1.06e+03 #88 t=2.06e-11 dt=6.4e-13 max_dmdt=1.04e+03 #89 t=2.13e-11 dt=6.4e-13 max_dmdt=1.03e+03 #90 t=2.19e-11 dt=6.4e-13 max_dmdt=1.01e+03 #91 t=2.26e-11 dt=6.4e-13 max_dmdt=994 #92 t=2.32e-11 dt=6.4e-13 max_dmdt=980 #93 t=2.42e-11 dt=9.91e-13 max_dmdt=969 #94 t=2.52e-11 dt=9.91e-13 max_dmdt=956 #95 t=2.62e-11 dt=9.91e-13 max_dmdt=943 #96 t=2.72e-11 dt=9.91e-13 max_dmdt=929 #97 t=2.81e-11 dt=9.91e-13 max_dmdt=915 #98 t=2.91e-11 dt=9.91e-13 max_dmdt=901 #99 t=3.01e-11 dt=9.91e-13 max_dmdt=887 #100 t=3.11e-11 dt=9.91e-13 max_dmdt=872 #101 t=3.21e-11 dt=9.91e-13 max_dmdt=863 #102 t=3.31e-11 dt=9.91e-13 max_dmdt=854 #103 t=3.41e-11 dt=9.91e-13 max_dmdt=844 #104 t=3.51e-11 dt=9.91e-13 max_dmdt=834 #105 t=3.61e-11 dt=9.91e-13 max_dmdt=823 #106 t=3.71e-11 dt=9.91e-13 max_dmdt=811 #107 t=3.81e-11 dt=9.91e-13 max_dmdt=798 #108 t=3.9e-11 dt=9.91e-13 max_dmdt=786 #109 t=4.07e-11 dt=1.61e-12 max_dmdt=768 #110 t=4.23e-11 dt=1.61e-12 max_dmdt=748 #111 t=4.39e-11 dt=1.61e-12 max_dmdt=730 #112 t=4.55e-11 dt=1.61e-12 max_dmdt=711 #113 t=4.71e-11 dt=1.61e-12 max_dmdt=690 #114 t=4.87e-11 dt=1.61e-12 max_dmdt=669 #115 t=5.03e-11 dt=1.61e-12 max_dmdt=646 #116 t=5.19e-11 dt=1.61e-12 max_dmdt=623 #117 t=5.35e-11 dt=1.61e-12 max_dmdt=600 #118 t=5.51e-11 dt=1.61e-12 max_dmdt=576 #119 t=5.67e-11 dt=1.61e-12 max_dmdt=552 #120 t=5.83e-11 dt=1.61e-12 max_dmdt=530 #121 t=5.99e-11 dt=1.61e-12 max_dmdt=509 #122 t=6.15e-11 dt=1.61e-12 max_dmdt=488 #123 t=6.31e-11 dt=1.61e-12 max_dmdt=468 #124 t=6.48e-11 dt=1.61e-12 max_dmdt=447 #125 t=6.64e-11 dt=1.61e-12 max_dmdt=434 #126 t=6.8e-11 dt=1.61e-12 max_dmdt=422 #127 t=6.96e-11 dt=1.61e-12 max_dmdt=410 #128 t=7.12e-11 dt=1.61e-12 max_dmdt=397 #129 t=7.28e-11 dt=1.61e-12 max_dmdt=384 #130 t=7.44e-11 dt=1.61e-12 max_dmdt=371 #131 t=7.6e-11 dt=1.61e-12 max_dmdt=357 #132 t=7.76e-11 dt=1.61e-12 max_dmdt=344 #133 t=7.92e-11 dt=1.61e-12 max_dmdt=331 #134 t=8.08e-11 dt=1.61e-12 max_dmdt=318 #135 t=8.24e-11 dt=1.61e-12 max_dmdt=306 #136 t=8.4e-11 dt=1.61e-12 max_dmdt=293 #137 t=8.56e-11 dt=1.61e-12 max_dmdt=281 #138 t=8.72e-11 dt=1.61e-12 max_dmdt=269 #139 t=8.88e-11 dt=1.61e-12 max_dmdt=258 #140 t=9.05e-11 dt=1.61e-12 max_dmdt=246 #141 t=9.21e-11 dt=1.61e-12 max_dmdt=235 #142 t=9.37e-11 dt=1.61e-12 max_dmdt=225 #143 t=9.53e-11 dt=1.61e-12 max_dmdt=215 #144 t=9.77e-11 dt=2.41e-12 max_dmdt=202 #145 t=1e-10 dt=2.41e-12 max_dmdt=188 #146 t=1.03e-10 dt=2.41e-12 max_dmdt=175 #147 t=1.05e-10 dt=2.41e-12 max_dmdt=162 #148 t=1.07e-10 dt=2.41e-12 max_dmdt=151 #149 t=1.1e-10 dt=2.41e-12 max_dmdt=140 #150 t=1.12e-10 dt=2.41e-12 max_dmdt=129 #151 t=1.15e-10 dt=2.41e-12 max_dmdt=120 #152 t=1.17e-10 dt=2.41e-12 max_dmdt=111 #153 t=1.19e-10 dt=2.41e-12 max_dmdt=103 #154 t=1.22e-10 dt=2.41e-12 max_dmdt=94.9 #155 t=1.24e-10 dt=2.41e-12 max_dmdt=87.7 #156 t=1.27e-10 dt=2.41e-12 max_dmdt=81 #157 t=1.29e-10 dt=2.41e-12 max_dmdt=74.9 #158 t=1.31e-10 dt=2.41e-12 max_dmdt=69.1 #159 t=1.34e-10 dt=2.41e-12 max_dmdt=63.8 #160 t=1.36e-10 dt=2.41e-12 max_dmdt=58.9 #161 t=1.4e-10 dt=3.72e-12 max_dmdt=53.3 #162 t=1.44e-10 dt=3.72e-12 max_dmdt=47.1 #163 t=1.47e-10 dt=3.72e-12 max_dmdt=41.6 #164 t=1.51e-10 dt=3.72e-12 max_dmdt=36.8 #165 t=1.55e-10 dt=3.72e-12 max_dmdt=32.5 #166 t=1.59e-10 dt=3.72e-12 max_dmdt=28.7 #167 t=1.62e-10 dt=3.72e-12 max_dmdt=25.4 #168 t=1.66e-10 dt=3.72e-12 max_dmdt=22.5 #169 t=1.7e-10 dt=3.72e-12 max_dmdt=19.9 #170 t=1.73e-10 dt=3.72e-12 max_dmdt=17.6 #171 t=1.77e-10 dt=3.72e-12 max_dmdt=15.5 #172 t=1.81e-10 dt=3.72e-12 max_dmdt=13.7 #173 t=1.85e-10 dt=3.72e-12 max_dmdt=12.1 #174 t=1.88e-10 dt=3.72e-12 max_dmdt=10.7 #175 t=1.92e-10 dt=3.72e-12 max_dmdt=9.5 #176 t=1.96e-10 dt=3.72e-12 max_dmdt=8.41 #177 t=2e-10 dt=3.72e-12 max_dmdt=7.44 #178 t=2.03e-10 dt=3.72e-12 max_dmdt=6.58 #179 t=2.07e-10 dt=3.72e-12 max_dmdt=5.83 #180 t=2.11e-10 dt=3.72e-12 max_dmdt=5.16 #181 t=2.14e-10 dt=3.72e-12 max_dmdt=4.56 #182 t=2.2e-10 dt=5.7e-12 max_dmdt=3.91 #183 t=2.26e-10 dt=5.7e-12 max_dmdt=3.25 #184 t=2.31e-10 dt=5.7e-12 max_dmdt=2.7 #185 t=2.37e-10 dt=5.7e-12 max_dmdt=2.24 #186 t=2.43e-10 dt=5.7e-12 max_dmdt=1.86 #187 t=2.49e-10 dt=5.7e-12 max_dmdt=1.54 #188 t=2.54e-10 dt=5.7e-12 max_dmdt=1.28 #189 t=2.6e-10 dt=5.7e-12 max_dmdt=1.07 #190 t=2.66e-10 dt=5.7e-12 max_dmdt=0.886 #191 t=2.71e-10 dt=5.7e-12 max_dmdt=0.737 #192 t=2.77e-10 dt=5.7e-12 max_dmdt=0.614 #193 t=2.83e-10 dt=5.7e-12 max_dmdt=0.511 #194 t=2.89e-10 dt=5.7e-12 max_dmdt=0.425 #195 t=2.94e-10 dt=5.7e-12 max_dmdt=0.354 #196 t=3e-10 dt=5.7e-12 max_dmdt=0.295 #197 t=3.06e-10 dt=5.7e-12 max_dmdt=0.246 #198 t=3.11e-10 dt=5.7e-12 max_dmdt=0.205 #199 t=3.2e-10 dt=8.66e-12 max_dmdt=0.163 #200 t=3.29e-10 dt=8.66e-12 max_dmdt=0.123 #201 t=3.37e-10 dt=8.66e-12 max_dmdt=0.0936 #202 t=3.46e-10 dt=8.66e-12 max_dmdt=0.071 #203 t=3.55e-10 dt=8.66e-12 max_dmdt=0.0539 #204 t=3.63e-10 dt=8.66e-12 max_dmdt=0.041 #205 t=3.72e-10 dt=8.66e-12 max_dmdt=0.0311 #206 t=3.81e-10 dt=8.66e-12 max_dmdt=0.0236 #207 t=3.89e-10 dt=8.66e-12 max_dmdt=0.018 #208 t=3.98e-10 dt=8.66e-12 max_dmdt=0.0137 #209 t=4.07e-10 dt=8.66e-12 max_dmdt=0.0104 #210 t=4.2e-10 dt=1.36e-11 max_dmdt=0.0073
After the system is relaxed, the magnetisation profile can be plotted.
[6]:
#NBVAL_IGNORE_OUTPUT m = np.copy(sim.spin) m.shape = (-1, 3) mx = m[:, 0] my = m[:, 1] mz = m[:, 2] x_array = np.arange(0, L, dx) plt.figure(figsize=(10,6)) plt.plot(x_array, mx, label='mx') plt.plot(x_array, my, label='my') plt.plot(x_array, mz, label='mz') plt.xlabel('x (nm)') plt.ylabel('<m>') plt.xlim([0.4*L, 0.6*L]) plt.ylim([-1, 1]) plt.grid() plt.legend()
<matplotlib.legend.Legend at 0x119de3780>