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.

Code

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
solver.relax()

# 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")
log.addColumn(
  ("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
solver.solve(condition.Time(2.7e-8))

Results

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