1D domain wall

Author: Marijan Beg

Date: 26/02/2016

This notebook can be downloaded from the github repository, found here.

Problem specification

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.

Simulation

[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()
[6]:
<matplotlib.legend.Legend at 0x119de3780>
../../_images/user_guide_ipynb_1d_domain_wall_15_1.png