EN | JP | Last update: 2025-12-26

Chapter 4: Advanced Topics

Antiferromagnetic Spintronics, Skyrmions, 2D Magnetic Materials

Reading Time: 30-40 min Difficulty: Intermediate-Advanced Code Examples: 5

In this chapter, we survey cutting-edge research topics in spintronics. We learn about antiferromagnetic spintronics enabling terahertz operation, topologically protected magnetic skyrmions, atomic-layer 2D magnetic materials, and topological spintronics exploiting new physics.


4.1 Antiferromagnetic Spintronics

Antiferromagnets (AFM) are magnetic materials with adjacent spins aligned antiparallel. While they have zero net magnetization, they are attracting attention for spintronics applications.

Characteristics of Antiferromagnets

Property Ferromagnet Antiferromagnet
Net magnetization Large Zero
Stray field Present None
Operating frequency ~GHz ~THz
External field robustness Low High

Why THz Operation is Possible

The AFM resonance frequency is determined by exchange interaction: $\omega_{AFM} \sim \sqrt{H_E H_A}$ ($H_E$: exchange field, $H_A$: anisotropy field). Since $H_E$ is very large (~100-1000 T equivalent), THz-range high-speed operation is possible.

Code Example 4.1: AFM Resonance Frequency Calculation

"""
Antiferromagnet resonance frequency calculation
"""
import numpy as np
import matplotlib.pyplot as plt

def afm_resonance_frequency(H_E, H_A, gamma=1.76e11):
    """
    AFM resonance frequency

    Parameters:
    H_E: Exchange field (T)
    H_A: Anisotropy field (T)
    gamma: Gyromagnetic ratio (rad/s/T)
    """
    omega = gamma * np.sqrt(H_E * H_A)
    return omega / (2 * np.pi)  # Hz

# Representative AFM material parameters
materials = {
    'NiO': {'H_E': 900, 'H_A': 0.05, 'T_N': 523},
    'Mn₂Au': {'H_E': 500, 'H_A': 0.1, 'T_N': 1500},
    'CuMnAs': {'H_E': 200, 'H_A': 0.02, 'T_N': 480},
    'Fe₂O₃': {'H_E': 600, 'H_A': 0.08, 'T_N': 950},
}

# Comparison with FM
FM_freq = 1.76e11 * 0.1 / (2 * np.pi)  # FM with H_A = 0.1 T

names = list(materials.keys())
frequencies = [afm_resonance_frequency(m['H_E'], m['H_A']) / 1e12 for m in materials.values()]
T_N_values = [m['T_N'] for m in materials.values()]

fig, axes = plt.subplots(1, 2, figsize=(14, 5))

# Resonance frequency
colors = plt.cm.viridis(np.linspace(0.2, 0.8, len(names)))
axes[0].bar(names, frequencies, color=colors)
axes[0].axhline(y=FM_freq/1e12, color='red', linestyle='--', linewidth=2, label='Typical FM (~GHz)')
axes[0].set_ylabel('Resonance Frequency (THz)', fontsize=12)
axes[0].set_title('Antiferromagnet Resonance Frequencies', fontsize=14)
axes[0].legend()
axes[0].grid(True, alpha=0.3, axis='y')

# Néel temperature
axes[1].bar(names, T_N_values, color=colors)
axes[1].axhline(y=300, color='red', linestyle='--', linewidth=2, label='Room Temperature')
axes[1].set_ylabel('Néel Temperature T_N (K)', fontsize=12)
axes[1].set_title('Antiferromagnet Néel Temperatures', fontsize=14)
axes[1].legend()
axes[1].grid(True, alpha=0.3, axis='y')

plt.tight_layout()
plt.show()

print(f"NiO: {afm_resonance_frequency(900, 0.05)/1e12:.1f} THz (~1000x faster than FM)")

Challenges in AFM Spintronics


4.2 Magnetic Skyrmions

Magnetic skyrmions are topologically protected vortex-like spin structures. Their non-trivial topology makes them stable against defects and drivable by ultra-low currents.

flowchart TD subgraph Skyrmion Features A[Topological Protection] --> B[High Stability] C[Nanoscale Size] --> D[High-Density Storage] E[Low Current Drive] --> F[Energy Efficient] end style A fill:#667eea,stroke:#5a67d8,color:#fff style C fill:#667eea,stroke:#5a67d8,color:#fff style E fill:#667eea,stroke:#5a67d8,color:#fff

Mathematical Description of Skyrmions

The topological charge (skyrmion number) is:

$$ Q = \frac{1}{4\pi} \int \mathbf{m} \cdot \left( \frac{\partial \mathbf{m}}{\partial x} \times \frac{\partial \mathbf{m}}{\partial y} \right) dx \, dy = \pm 1 $$

Code Example 4.2: Skyrmion Structure Visualization

"""
Magnetic skyrmion structure visualization
"""
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

def skyrmion_profile(r, R, w):
    """
    Skyrmion profile function

    Parameters:
    r: Distance from center
    R: Skyrmion radius
    w: Domain wall width
    """
    theta = np.pi * (1 - np.tanh((r - R) / w)) / 2
    return theta

def skyrmion_magnetization(x, y, R=50, w=10, gamma=0, Q=1):
    """
    Skyrmion magnetization distribution

    Parameters:
    x, y: Coordinates
    R: Skyrmion radius (nm)
    w: Domain wall width (nm)
    gamma: Helicity angle
    Q: Skyrmion number (+1 or -1)
    """
    r = np.sqrt(x**2 + y**2)
    phi = np.arctan2(y, x)

    theta = skyrmion_profile(r, R, w)

    mx = np.sin(theta) * np.cos(Q * phi + gamma)
    my = np.sin(theta) * np.sin(Q * phi + gamma)
    mz = np.cos(theta)

    return mx, my, mz

# Grid generation
L = 150  # nm
N = 100
x = np.linspace(-L, L, N)
y = np.linspace(-L, L, N)
X, Y = np.meshgrid(x, y)

# Skyrmion calculation (Néel and Bloch types)
fig, axes = plt.subplots(1, 3, figsize=(15, 4))

types = [
    ('Néel Type (γ=0)', 0),
    ('Bloch Type (γ=π/2)', np.pi/2),
    ('Anti-skyrmion', 0),  # Q=-1
]

for ax, (title, gamma) in zip(axes, types):
    Q = -1 if 'Anti' in title else 1
    mx, my, mz = skyrmion_magnetization(X, Y, R=50, w=15, gamma=gamma, Q=Q)

    # mz color map
    im = ax.pcolormesh(X, Y, mz, cmap='RdBu', vmin=-1, vmax=1, shading='auto')

    # In-plane magnetization arrows
    skip = 5
    ax.quiver(X[::skip, ::skip], Y[::skip, ::skip],
              mx[::skip, ::skip], my[::skip, ::skip],
              color='black', alpha=0.7, scale=30)

    ax.set_xlabel('x (nm)', fontsize=11)
    ax.set_ylabel('y (nm)', fontsize=11)
    ax.set_title(title, fontsize=12)
    ax.set_aspect('equal')
    plt.colorbar(im, ax=ax, label='$m_z$')

plt.tight_layout()
plt.show()

# Topological charge calculation
def calculate_topological_charge(mx, my, mz, dx):
    """Numerical calculation of topological charge"""
    dmx_dx = np.gradient(mx, dx, axis=1)
    dmx_dy = np.gradient(mx, dx, axis=0)
    dmy_dx = np.gradient(my, dx, axis=1)
    dmy_dy = np.gradient(my, dx, axis=0)
    dmz_dx = np.gradient(mz, dx, axis=1)
    dmz_dy = np.gradient(mz, dx, axis=0)

    Q_density = (mx * (dmy_dx * dmz_dy - dmz_dx * dmy_dy) +
                 my * (dmz_dx * dmx_dy - dmx_dx * dmz_dy) +
                 mz * (dmx_dx * dmy_dy - dmy_dx * dmx_dy))

    Q = np.sum(Q_density) * dx**2 / (4 * np.pi)
    return Q

mx, my, mz = skyrmion_magnetization(X, Y, R=50, w=15)
Q = calculate_topological_charge(mx, my, mz, x[1]-x[0])
print(f"Calculated topological charge: Q = {Q:.2f}")

Current-Driven Skyrmion Motion

Skyrmions are driven by spin transfer torque and move at an angle to the current density $\mathbf{J}$ due to the skyrmion Hall effect:

$$ \mathbf{v} = v_\parallel \hat{J} + v_\perp (\hat{z} \times \hat{J}) $$

Code Example 4.3: Skyrmion Dynamics

"""
Current-driven skyrmion simulation (Thiele equation)
"""
import numpy as np
import matplotlib.pyplot as plt

def skyrmion_dynamics(t, state, G, D, alpha, F_STT, F_pin=None):
    """
    Skyrmion motion via Thiele equation

    Parameters:
    state: [x, y] position
    G: Gyroscopic coupling constant (4πQ)
    D: Dissipation tensor
    alpha: Damping
    F_STT: STT driving force
    F_pin: Pinning force (optional)
    """
    x, y = state

    if F_pin is None:
        F_pin = np.zeros(2)
    else:
        F_pin = F_pin(x, y)

    F_total = F_STT + F_pin

    # Thiele equation: G × v + D · v = F
    # Analytical solution
    denom = G**2 + (alpha * D)**2
    vx = (alpha * D * F_total[0] + G * F_total[1]) / denom
    vy = (alpha * D * F_total[1] - G * F_total[0]) / denom

    return np.array([vx, vy])

# Parameters
G = 4 * np.pi  # Skyrmion with Q=1
D = 4 * np.pi  # Simplified
alpha = 0.1

# Current direction and magnitude
J_magnitude = 1.0
theta_J = 0  # x-direction

F_STT = J_magnitude * np.array([np.cos(theta_J), np.sin(theta_J)])

# Time evolution
dt = 0.01
t_max = 100
t = np.arange(0, t_max, dt)

positions = np.zeros((len(t), 2))
positions[0] = [0, 0]

for i in range(1, len(t)):
    v = skyrmion_dynamics(t[i], positions[i-1], G, D, alpha, F_STT)
    positions[i] = positions[i-1] + v * dt

# Visualization
fig, axes = plt.subplots(1, 2, figsize=(14, 5))

# Trajectory
axes[0].plot(positions[:, 0], positions[:, 1], 'b-', linewidth=2)
axes[0].plot(positions[0, 0], positions[0, 1], 'go', markersize=10, label='Start')
axes[0].plot(positions[-1, 0], positions[-1, 1], 'ro', markersize=10, label='End')
axes[0].arrow(0, -5, 10, 0, head_width=1, head_length=1, fc='red', ec='red')
axes[0].text(5, -8, '$J$ (current direction)', fontsize=11, ha='center')
axes[0].set_xlabel('x (a.u.)', fontsize=12)
axes[0].set_ylabel('y (a.u.)', fontsize=12)
axes[0].set_title('Skyrmion Trajectory (Skyrmion Hall Effect)', fontsize=14)
axes[0].legend()
axes[0].grid(True, alpha=0.3)
axes[0].set_aspect('equal')

# Skyrmion Hall angle vs damping
alphas = np.linspace(0.01, 0.5, 50)
hall_angles = np.degrees(np.arctan(G / (alphas * D)))

axes[1].plot(alphas, hall_angles, 'b-', linewidth=2)
axes[1].set_xlabel('Damping α', fontsize=12)
axes[1].set_ylabel('Skyrmion Hall Angle (degrees)', fontsize=12)
axes[1].set_title('Skyrmion Hall Angle vs Damping', fontsize=14)
axes[1].grid(True, alpha=0.3)

plt.tight_layout()
plt.show()

print("Low damping materials have larger skyrmion Hall angles")

4.3 2D Magnetic Materials

The 2017 discovery of 2D magnetism in CrI₃ and Cr₂Ge₂Te₆ has opened new possibilities for spintronics.

Representative 2D Magnetic Materials

Material Magnetism T_c/T_N (K) Features
CrI₃ FM/AFM 45 Interlayer AFM coupling
Cr₂Ge₂Te₆ FM 66 Ising-type
Fe₃GeTe₂ FM 220 High Curie temperature
FePS₃ AFM 118 Zigzag AFM

Code Example 4.4: Curie Temperatures of 2D Magnetic Materials

"""
Comparison of 2D magnetic material properties
"""
import numpy as np
import matplotlib.pyplot as plt

# 2D magnetic material data
materials_2d = {
    'CrI₃': {'T_c': 45, 'type': 'FM', 'anisotropy': 'Ising', 'year': 2017},
    'Cr₂Ge₂Te₆': {'T_c': 66, 'type': 'FM', 'anisotropy': 'Heisenberg', 'year': 2017},
    'Fe₃GeTe₂': {'T_c': 220, 'type': 'FM', 'anisotropy': 'Ising', 'year': 2018},
    'VSe₂': {'T_c': 300, 'type': 'FM', 'anisotropy': 'Ising', 'year': 2018},
    'MnSe₂': {'T_c': 240, 'type': 'FM', 'anisotropy': 'Easy-plane', 'year': 2019},
    'CrTe₂': {'T_c': 310, 'type': 'FM', 'anisotropy': 'Ising', 'year': 2020},
}

names = list(materials_2d.keys())
T_c = [m['T_c'] for m in materials_2d.values()]
years = [m['year'] for m in materials_2d.values()]
types = [m['type'] for m in materials_2d.values()]

fig, axes = plt.subplots(1, 2, figsize=(14, 5))

# Curie temperature comparison
colors = ['blue' if t == 'FM' else 'red' for t in types]
axes[0].barh(names, T_c, color=colors, alpha=0.7)
axes[0].axvline(x=300, color='red', linestyle='--', linewidth=2, label='Room Temperature')
axes[0].set_xlabel('Transition Temperature (K)', fontsize=12)
axes[0].set_title('2D Magnetic Material Transition Temperatures', fontsize=14)
axes[0].legend()
axes[0].grid(True, alpha=0.3, axis='x')

# Discovery year vs T_c
colors_year = plt.cm.viridis((np.array(T_c) - min(T_c)) / (max(T_c) - min(T_c)))
axes[1].scatter(years, T_c, s=200, c=T_c, cmap='viridis', alpha=0.7)

for name, year, tc in zip(names, years, T_c):
    axes[1].annotate(name, (year, tc), xytext=(5, 5), textcoords='offset points', fontsize=9)

axes[1].axhline(y=300, color='red', linestyle='--', linewidth=2, label='Room Temperature')
axes[1].set_xlabel('Discovery Year', fontsize=12)
axes[1].set_ylabel('Transition Temperature (K)', fontsize=12)
axes[1].set_title('History of 2D Magnetic Material Discovery', fontsize=14)
axes[1].legend()
axes[1].grid(True, alpha=0.3)

plt.tight_layout()
plt.show()

print("Active search for room-temperature 2D magnetic materials continues")

Applications of 2D Magnetic Materials


4.4 Topological Spintronics

Topological insulators (TI) and Weyl semimetals have giant spin-orbit effects, attracting attention as next-generation spintronics materials.

Topological Surface States

TI surface states have spin-momentum locking where spin and momentum are locked:

$$ H_{surf} = v_F (\boldsymbol{\sigma} \times \mathbf{k}) \cdot \hat{z} $$

Code Example 4.5: SOT Efficiency of Topological Insulators

"""
Spintronics applications of topological materials
"""
import numpy as np
import matplotlib.pyplot as plt

# Material property data
materials_comparison = {
    # Conventional materials
    'Pt': {'theta_eff': 0.08, 'rho': 20, 'type': 'Metal'},
    'W(β)': {'theta_eff': 0.30, 'rho': 150, 'type': 'Metal'},
    'Ta(β)': {'theta_eff': 0.15, 'rho': 180, 'type': 'Metal'},

    # Topological materials
    'Bi₂Se₃': {'theta_eff': 2.0, 'rho': 1000, 'type': 'TI'},
    'Bi₂Te₃': {'theta_eff': 1.5, 'rho': 800, 'type': 'TI'},
    'BiSb': {'theta_eff': 0.5, 'rho': 400, 'type': 'TI'},

    # Weyl semimetals
    'WTe₂': {'theta_eff': 0.4, 'rho': 500, 'type': 'WSM'},
    'MoTe₂': {'theta_eff': 0.3, 'rho': 300, 'type': 'WSM'},
}

names = list(materials_comparison.keys())
theta_eff = [m['theta_eff'] for m in materials_comparison.values()]
rho = [m['rho'] for m in materials_comparison.values()]
types = [m['type'] for m in materials_comparison.values()]

# Color coding
color_map = {'Metal': 'blue', 'TI': 'red', 'WSM': 'green'}
colors = [color_map[t] for t in types]

fig, axes = plt.subplots(1, 2, figsize=(14, 6))

# Spin Hall efficiency vs resistivity
axes[0].scatter(rho, theta_eff, c=colors, s=200, alpha=0.7)
for name, r, th, t in zip(names, rho, theta_eff, types):
    axes[0].annotate(name, (r, th), xytext=(5, 5), textcoords='offset points', fontsize=9)

axes[0].set_xlabel('Resistivity (μΩ·cm)', fontsize=12)
axes[0].set_ylabel('Effective Spin Hall Angle θ_eff', fontsize=12)
axes[0].set_title('SOT Efficiency of Topological Materials', fontsize=14)
axes[0].set_xscale('log')
axes[0].grid(True, alpha=0.3)

# Legend
from matplotlib.patches import Patch
legend_elements = [Patch(facecolor='blue', label='Heavy Metal'),
                   Patch(facecolor='red', label='Topological Insulator'),
                   Patch(facecolor='green', label='Weyl Semimetal')]
axes[0].legend(handles=legend_elements)

# Figure of Merit
fom = [th / (r**0.5) * 100 for th, r in zip(theta_eff, rho)]

x = np.arange(len(names))
bars = axes[1].bar(x, fom, color=colors, alpha=0.7)
axes[1].set_xticks(x)
axes[1].set_xticklabels(names, rotation=45, ha='right')
axes[1].set_ylabel('Figure of Merit θ/√ρ (a.u.)', fontsize=12)
axes[1].set_title('Overall Spintronics Material Performance', fontsize=14)
axes[1].grid(True, alpha=0.3, axis='y')

plt.tight_layout()
plt.show()

print("TIs have giant θ_eff but high resistivity is a challenge for practical use")
print("Weyl semimetals are promising candidates with good balance")

4.5 Future Outlook

mindmap root((Next-Gen
Spintronics)) Materials Innovation Topological Materials 2D Magnetic Materials Antiferromagnets Altermagnets Device Evolution SOT-MRAM Commercialization Racetrack Memory Spin Logic Circuits Neuromorphic Physics Exploration Magnonics Skyrmionics Spin Phononics Quantum Spintronics Application Expansion Ultra-Low Power AI Quantum Sensing Communication Devices Edge Computing

Notable Trends


Series Summary

What We Learned in the Intermediate Series

Next Steps


References

  1. Baltz, V., et al. (2018). "Antiferromagnetic spintronics." Rev. Mod. Phys., 90, 015005.
  2. Fert, A., et al. (2017). "Magnetic skyrmions: advances in physics and potential applications." Nat. Rev. Mater., 2, 17031.
  3. Gong, C., & Zhang, X. (2019). "Two-dimensional magnetic crystals and emergent heterostructure devices." Science, 363, eaav4450.
  4. Mellnik, A. R., et al. (2014). "Spin-transfer torque generated by a topological insulator." Nature, 511, 449-451.