Vortex Switching

A magnetic vortex structure is created in a permalloy square. Then a spin-polarized alternating current is applied to the system. The frequency of the current matches the resonance frequency of the vortex. Thus the vortex is excited and switches.


from magnum import *
from math import *
from os import *

# Set some Simulation Constants
cells_x   = 100
cells_y   = 100
cells_z   = 1 
thickness = 2e-8

core_x    = 1e-7
core_y    = 1e-7

# Define a world made of permalloy
mesh = RectangularMesh((cells_x, cells_y, cells_z), (2e-9, 2e-9, thickness))
world = World(mesh, Body('sample',Material.Py()))

# Initialize Simulation: Set the magnetization to a predefined state
# with a vortex and relax
solver = create_solver(world, [StrayField, ExchangeField], log=True)
solver.state.M = vortex.magnetizationFunction(core_x, core_y, 1)
solver.state.alpha = 0.3

# save relaxed state for the next step
mag = solver.state.M

# Excite the vortex by an AC current
solver = create_solver(
        world, [StrayField, ExchangeField, ExternalField], log=True)
solver.state.M = mag
solver.state.H_ext_amp = (10e-3/MU0, 0, 0)
solver.state.H_ext_freq = (4.4e9, 0, 0)

# Create step handler that finds and saves the position of the
# vortex as well
log = DataTableLog("data.odt")
  ("Vortexcore X-pos.", "core_x"), ("Vortexcore Y-pos.", "core_y"),
  lambda state: vortex.findCore2(solver, core_x, core_y))
vtkh = VTKStorage("./","M")

# Add the step handlers
solver.addStepHandler(log, condition.EveryNthStep(10))
solver.addStepHandler(vtkh , condition.EveryNthStep(100))

# Simulate for 27 ns


Due to the resonant excitation the vortex starts to gyrate and finally switches.

The time evolution of the z-Component of the magnetization rendered with ParaView