Skip to main content

Interactive Topology Explorer

See quantum geometry move

Topology describes properties of objects that survive any smooth deformation — stretching, twisting, bending — but never tearing. In magnetism this abstract mathematics becomes startlingly physical: tiny spin textures called skyrmions and vortices are topologically protected objects that behave like stable particles inside a magnetic material. This interactive tool lets you see, manipulate, and physically understand them.

Every atom in a ferromagnet carries a magnetic moment — a tiny compass needle called a spin. When these spins wind around each other in a precise ordered pattern the result is a topological soliton: a structure whose global winding number, the topological charge Q, is a protected integer. You cannot smoothly deform a Q = −1 skyrmion into the uniform background (Q = 0) without passing through an energy barrier — which is why skyrmions are extraordinarily robust and are promising candidates for next-generation data storage and neuromorphic computing.


Skyrmion

Spins wrap the unit sphere once. Topological charge Q = −1. Found in chiral magnets such as MnSi and Fe0.5Co0.5Si.

Antiskyrmion

Mirror-image winding, Q = +1. Coexists with skyrmions in D2d magnets such as Mn1.4PtSn — same energy, opposite charge.

Magnetic vortex

Planar winding, Q = 0 — no topological protection. Core polarity (up/down) and chirality (CW/CCW) are independent degrees of freedom.

Hopfion

A 3-D topological soliton with non-zero Hopf index. Cross-sections reveal nested toroidal spin loops — each field line is a closed curve.

"The topological charge is like a winding number around a knot — you can pull the string as tight or as loose as you like, but you cannot unknot it without cutting. In a magnet, that cut costs enormous energy. That is why skyrmions survive."

The Topology Explorer below visualises these spin textures in real time. Drag the core, tune the helicity γ to transition between Bloch and Néel character, adjust the Dzyaloshinskii–Moriya interaction strength, and watch the live topological charge readout confirm that Q never changes — no matter how hard you try to distort the texture.

Topological protection Spin textures Magnetic skyrmions DM interaction Hopf index Chiral magnets Neuromorphic computing
Introduction

Interactive Explorer

Interactive explorer

Q = −1
left-drag core · left-drag empty = pan · scroll = zoom · right-drag = γ · shift+left-drag = λ · dbl-click reset · [solid mode] left-drag = orbit · ctrl+drag = pan
S² projection
Lattice
Cores1
Resolution22
Vorticity
Render
Readout
Q−1
m+1
p (sel.)−1
γ/π (sel.)0.00
λ (sel.)
N cores1
zoom1.00×
A magnetic skyrmion is a topologically protected spin texture with Q = −1. The spins wrap the unit sphere exactly once — drag the core anywhere and watch Q stay fixed.
Interactive Explorer

Instructions   

How to use the explorer

left-drag core
Move a core. Left-click and drag within ~30 px of a core ring to grab it — it highlights green — then drag it freely. Grabbing a core also selects it in the Core props panel. With multiple cores each moves independently unless Lock cores is active. The topological charge Q never changes.
left-drag empty
Pan the field. Left-click and drag on empty canvas (away from any core) to pan the entire spin texture.
scroll
Zoom the view. Scroll (or pinch on touch) to zoom in and out. In standard render modes the viewport scales like a map: skyrmions appear larger and core markers track with the field. In Solid hedgehog mode, scroll scales the 3D camera — the mesh appears larger or smaller on screen while the same field area is always displayed, so all cores remain visible at any zoom level. Core markers (crosshair rings) track the mesh at all times. This does not change any physical property of the skyrmion; to change a core's actual size use Shift + left-drag.
right-drag
Rotate helicity γ of the selected core. Right-click and drag horizontally to sweep γ continuously — transitioning between Néel (radial) and Bloch (curling) character. Affects only the core currently selected in the Core props panel, so different cores can have different helicities.
shift + left-drag
Rescale λ of the selected core (physical resize). Hold Shift and left-click drag vertically to physically grow or shrink the selected core's radius — this changes the actual λ value and updates the slider in the Core props panel. Unlike scrolling (which only zooms the camera), this changes a real property of the skyrmion. Drag near a specific core to target it automatically; otherwise the currently selected core in the panel is used.
lock cores
Move all cores together. Click "Lock cores" (turns blue) to move the entire formation as a rigid group — dragging any core translates all of them while preserving their relative positions. Click "Unlock cores" to return to independent movement.
double-click
Quick reset. Resets pan, zoom, and snaps all cores back to their default symmetric positions. In Solid hedgehog mode also resets the orbit angle and 3D camera zoom. Use the Reset button in the sidebar for a full reset including all sliders, mode, and per-core properties.
left-drag (hedgehog)
Orbit the 3D hedgehog view. When Solid hedgehog render mode is active, left-drag rotates the 3D perspective — drag horizontally to spin the azimuth, drag vertically to tilt the elevation. Scroll to zoom the 3D camera. Double-click to reset the orbit angle and zoom.
ctrl + left-drag (hedgehog)
Pan the 3D hedgehog view. Hold Ctrl (or ⌘ on Mac) and left-drag to pan the hedgehog mesh across the canvas. This shifts the screen position of the entire 3D scene, including all core markers, without changing which part of the spin field is rendered. Double-click to reset the pan offset.
mode tabs
Switch topology. Choose Skyrmion, Antiskyrmion, Vortex, or Hopfion. Switching applies the type to all cores at once — you can then override individual cores using the Type toggle in the Core props panel.

View modes

Spin field

Arrows show each spin vector direction. The default render is Rainbow + arrows — the scientific colour wheel with white direction arrows overlaid. Use the Render dropdown to switch: Rainbow (phi-hue) shows the colour map only; Solid hedgehog gives an interactive 3D cone plot that you can orbit with the mouse.

Topo density

Pixel-accurate heatmap of the topological charge density ρ(r). Integrating ρ over the full plane gives the integer Q. With mixed Skyrmion/Antiskyrmion cores, individual contributions of +1 and −1 appear as distinct patches.

Brightness is on a fixed physical scale, referenced to the peak density of a skyrmion at the default size λ = 1.40. Because the integral of ρ is pinned to Q, a larger skyrmion spreads the same charge over a wider area: doubling λ dims the peak ~4× (ρmax ∝ 1/λ²) while the blob widens proportionally. Skyrmions smaller than the reference saturate smoothly (tanh) instead of clipping. Brightness is therefore directly comparable between frames and between cores of different sizes, and does not change with zoom or pan.

Energy map

Local magnetic energy combining ferromagnetic exchange J, Dzyaloshinskii–Moriya D, and anisotropy K. Updates live with the sidebar sliders.

Colour is on a fixed analytic scale: the map plots [(J+K)sin²θ + D|sin 2θ|] / emax, where emax = ½[(J+K) + √((J+K)² + 4D²)] is the largest value the expression can take at any tilt angle θ. The scale is independent of λ, zoom and pan, and rescales only when the J/D/K sliders change. Both bright rings flank the equator (r ≈ λ, spins in-plane): the exchange/anisotropy terms peak there, but the DM term |sin 2θ| vanishes at θ = π/2 and peaks at θ = π/4 and 3π/4 — so for sufficiently large D a dimmer ring appears exactly where spins lie in-plane, flanked by two bright annuli. Note this view shows the magnitude of each term; the true DM energy is signed (partially negative — it is what stabilises the skyrmion), so read it as a map of where the texture winds, not a literal energy landscape.

Streamlines

Field lines follow the in-plane spin direction. A Néel skyrmion (γ = 0) shows a radial starburst; a Bloch skyrmion (γ = π/2) shows a circular vortex. An antiskyrmion shows the mirror-image winding of whichever type is set. With per-core type mixing, both winding directions appear simultaneously.


Sidebar controls

Cores

Sets the number of skyrmion cores (1–4), placed initially in a symmetric arrangement. Each core can be dragged independently on the canvas. Total Q is the sum of individual core charges — mixing Skyrmion and Antiskyrmion types can reduce the total Q.

Core props panel

Appears below the sliders. Select a core with the C1 / C2 / C3 / C4 tab buttons — or simply click/drag a core on the canvas to select it automatically. Each core has its own independently adjustable Polarity p, Type (Skyrmion / Antiskyrmion), Size λ, and Helicity γ.

Size λ (per core)

Scales the profile radius of the selected core. Click the value label to type an exact number, or drag the slider. In real materials λ is set by D/J — a stronger DM interaction produces larger skyrmions. Use Apply to all cores to broadcast one core's λ to all others.

Helicity γ (per core)

Rotates the in-plane spin orientation of the selected core. γ = 0 or π → Néel (radial spins); γ = π/2 → Bloch (curling spins). Each core can hold a different γ — physically realised in frustrated magnets and synthetic antiferromagnets where helicity is an unpinned degree of freedom. Click the value to type an exact number; type pi or π for π-based values.

Polarity p (per core)

Sets whether the core spin points up (p = +1) or down (p = −1) for the selected core. Flipping polarity changes the energy barrier sign but not the topological charge. Toggle with the p = −1 / p = +1 buttons.

Type: Skyrmion / Antiskyrmion (per core)

Overrides the global mode tab for a single core. Set one core to Skyrmion (Q = −1) and another to Antiskyrmion (Q = +1) to see them coexist in the same field — a scenario realised in materials with D₂d symmetry such as Mn₁.₄PtSn.

Apply to all cores

Broadcasts the selected core's λ, γ, polarity, and type to every other core in one click. Useful for quickly returning to a uniform state before tweaking individually again.

Vorticity m

The winding number of the in-plane component around the core. Skyrmion: m = +1; antiskyrmion: m = −1; bimeron: m = +2. Applied globally to all cores.

J, D, K sliders

Ferromagnetic exchange (J), Dzyaloshinskii–Moriya (D), and uniaxial anisotropy (K) — the three terms in the micromagnetic Hamiltonian. These sliders are only visible when the Energy map view tab is active. Applied globally; energy bars in the readout reflect their relative magnitudes.

Render mode

Rainbow + arrows (default): colour wheel with white arrows — the standard scientific colourmap with spin directions overlaid. Rainbow (phi-hue): full colour wheel only. Spin arrows: blue arrows only. Colour by sz: pixel map of the out-of-plane component. Arrows + colour: arrows coloured by spin direction. Solid hedgehog: interactive 3D cone plot — left-drag to orbit, scroll to zoom the 3D camera, Ctrl + left-drag to pan. Core positions are marked with bright crosshair rings that track the mesh at all zoom and orbit angles.

Click-to-type values

The value label next to any slider — including the per-core Size λ and Helicity γ in the Core props panel, and the global J, D, K, Resolution sliders — can be clicked to type an exact number. Press Enter to confirm, Escape to cancel. Type pi or π for π-based values, e.g. pi/2 sets exactly 1.5708 (Bloch character).

Reset

Fully restores the explorer to its initial state: pan, zoom, core positions, all slider values, mode tab (Skyrmion), view tab (Spin field), render mode (Rainbow + arrows), and all per-core properties. The core is placed at the canvas centre. Double-clicking the canvas does a lighter reset — geometry and core positions only, leaving sliders untouched.

S² projection

Maps every spin onto the unit sphere. A single skyrmion covers S² once (Q = −1). With N identical cores the coverage wraps N times. With mixed types, skyrmion contributions (Q = −1) and antiskyrmion contributions (Q = +1) partially cancel — watch the sphere coverage change as you mix types.

Tip

Set Cores to 2, then in the Core props panel set C1 to Skyrmion and C2 to Antiskyrmion. Switch to Topo density view and drag them close together — the Q = −1 and Q = +1 charge densities partially annihilate, and the total Q in the readout drops to 0.

Tip

Set Cores to 2 or more, give each core a different Helicity γ in the Core props panel, then switch to Rainbow (phi-hue) render mode — each core will show a distinct colour-wheel rotation, visualising how helicity-disordered skyrmions look in frustrated magnets.

Tip

Use Lock cores to set up a precise skyrmion lattice: arrange the cores to the spacing you want by dragging them individually, then lock and pan the whole formation across the canvas. The energy map and S² projection update live as you move.

Tip

For the most vibrant view, set Render to Rainbow + arrows then click the per-core Helicity γ value and type pi/2 — this gives a perfect Bloch skyrmion. Type 0 for a Néel skyrmion, or sweep the slider to watch the colour wheel rotate continuously.

Instructions