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.
Interactive Explorer
Interactive explorer
Instructions
How to use the explorer
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.
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.
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.
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.
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.