Physical Model and Hamiltonian: This simulation uses the same model as the “Stochastic Landau-Lifshitz-Gilbert (LLG) Dynamics on a $C_6$ Symmetric Lattice” page: classical unit spins ($|\mathbf{S}_i| = 1$) on a $C_6$-symmetric triangular lattice with nearest-neighbour exchange, the Dzyaloshinskii–Moriya interaction (DMI) and an external magnetic field along $z$. The only difference is that the field is no longer uniform in space: its strength varies sinusoidally with the lattice row ($y$).
$$ \mathcal{H} = -J \sum_{\langle i,j \rangle} \mathbf{S}_i \cdot \mathbf{S}_j - \sum_{\langle i,j \rangle} \mathbf{D}_{ij} \cdot (\mathbf{S}_i \times \mathbf{S}_j) - \sum_i B_z(y_i)\, S_i^z, \qquad B_z(y) = \pm\left[B_0 + A \sin\!\left(\frac{2\pi y}{L}\right)\right] $$
For the Néel type $\mathbf{D}_{ij} = D(\hat{u}_{ij} \times \hat{z})$, and for the Bloch type $\mathbf{D}_{ij} = D\hat{u}_{ij}$. Since the lattice rows are horizontal on the screen, the field depends only on the vertical position: the gradient is vertical and the lines of constant field are horizontal. The rows where the field is weakest and strongest ($y = 3L/4$ and $y = L/4$) are marked with dashed lines on the lattice, and the chart on the right shows the $|B_z|$ profile.
LLG Equation: The spins evolve according to the same dimensionless Landau–Lifshitz–Gilbert equation as on the “Stochastic Landau-Lifshitz-Gilbert (LLG) Dynamics on a $C_6$ Symmetric Lattice” page ($\tau = t/t_0$, $t_0 = (1+\alpha^2)/(\gamma J)$):
$$ \frac{d\mathbf{S}_i}{d\tau} = -\mathbf{S}_i \times \mathbf{h}_i^{\text{tot}} - \alpha \, \mathbf{S}_i \times (\mathbf{S}_i \times \mathbf{h}_i^{\text{tot}}), \qquad \mathbf{h}_i^{\text{eff}} = \sum_{j} \left( J\,\mathbf{S}_j + \mathbf{S}_j \times \mathbf{D}_{ij} \right) + B_z(y_i)\,\hat{z} $$
Here $\mathbf{h}_i^{\text{tot}} = \mathbf{h}_i^{\text{eff}} + \mathbf{h}_i^{\text{th}}$. The thermal field is defined exactly as on the “Stochastic Landau-Lifshitz-Gilbert (LLG) Dynamics on a $C_6$ Symmetric Lattice” page, but this page runs at $T = 0$ by default.
Why Does the Skyrmion Move? The core of the skyrmion points opposite to the field. The Zeeman energy of the skyrmion therefore grows with the local field strength $|B|$. When the field varies in space, the energy of the skyrmion depends on its position, and the skyrmion, like a particle, feels a force towards weaker field:
$$ \mathbf{F} = -\nabla U(\mathbf{R}) $$
Here $\mathbf{R}$ is the position of the skyrmion and $U$ its energy. The blue arrow on the lattice shows the direction of this force.
Thiele Equation and the Skyrmion Hall Effect: The velocity $\mathbf{v}$ of a skyrmion that moves without changing its shape is described by the Thiele equation:
$$ \mathbf{G} \times \mathbf{v} + \alpha\,\mathcal{D}\,\mathbf{v} = \mathbf{F}, \qquad \mathbf{G} = 4\pi Q\,\hat{z}, \qquad \mathcal{D} = \frac{1}{2}\int \left[ (\partial_x \mathbf{S})^2 + (\partial_y \mathbf{S})^2 \right] dx\,dy $$
The first (gyrotropic) term is proportional to the topological charge $Q$ and produces a velocity component perpendicular to the force. The second term comes from damping. As a result, the skyrmion does not move along the force but at an angle to it:
$$ \tan\theta_{\text{SkH}} = \frac{4\pi |Q|}{\alpha\,\mathcal{D}} $$
This is the skyrmion Hall effect. For weak damping ($\alpha \ll 1$) the angle approaches $90^\circ$: instead of "rolling down" towards weaker field, the skyrmion slides almost along the lines of constant field, that is, horizontally. The sense of the deflection depends only on the sign of $Q$. Néel and Bloch skyrmions therefore follow the same trajectory, while reversing the field ($Q \to -Q$) reverses the deflection. The motion is set by the topology of the skyrmion, not by its chirality.
Measurement: In every frame the skyrmion core is located as the weighted centre around a local minimum of $S_z$. The velocity is computed from the displacement over the last $\Delta\tau = 10$ (green arrow). The measured Hall angle is shown in the control panel next to the prediction of the Thiele equation. For the prediction, $Q$ (Berg–Lüscher definition) and $\mathcal{D}$ are computed from the current spin configuration using finite differences. At the default parameters the measured angle and the prediction agree within a few degrees (for example $83^\circ$ and $84^\circ$ at $\alpha = 0.1$).
Periodic Field Profile and the Magnetic Valley: A constant (linear) gradient is not compatible with periodic boundary conditions, so the field is chosen to be sinusoidal. The skyrmion starts in the middle row ($y = L/2$), where the gradient is largest, moves horizontally and wraps around the periodic boundary. A small component of its velocity lies along the force, so with every lap the skyrmion moves slightly towards weaker field. Eventually it reaches the row where the field is weakest (the "magnetic valley", $y = 3L/4$) and stops there, because the gradient vanishes. This slow descent can be followed by the yellow dot in the profile chart on the right.
Initial State and Interaction: The "Single skyrmion" button creates one skyrmion in a ferromagnetic background and relaxes it with strong damping ($\alpha = 0.5$, $\Delta\tau = 30$) in the uniform field $B_0$ before the gradient is switched on. You can add further skyrmions anywhere by clicking on the lattice. A new skyrmion cannot be placed closer than about 4.5 lattice constants to an existing one; a closer click would make the two skyrmions overlap. The "Reverse field" button reverses the field and all spins together, which gives a partner system with the opposite sign of $Q$.
Interaction Between Skyrmions: Because the simulation solves for all spins, the interaction between skyrmions is not added separately; it emerges by itself. When two skyrmions come close, their tails overlap and a repulsive force arises between them. This force decays exponentially within a few lattice constants. According to the Thiele equation, the skyrmions respond to this force too not by moving straight apart but largely by moving perpendicular to it. As a result, in a uniform field ($A = 0$) two nearby skyrmions start to orbit their common centre while slowly moving apart; the sense of rotation depends on the sign of $Q$. In the gradient field the skyrmions also push each other vertically: the skyrmion in the lower row, which on its own would drift up into the valley, can be pushed down by its neighbour. When several skyrmions are present, the Hall angle measured in the control panel reflects not only the gradient force but also the interaction.
Numerical Method: The integration uses the same Heun (predictor–corrector) method as the “Stochastic Landau-Lifshitz-Gilbert (LLG) Dynamics on a $C_6$ Symmetric Lattice” page, with time step $d\tau = 0.02$. The default value of the "Integrations/Frame" parameter is 20; with this value the skyrmion advances by about two lattice constants per second.
Visualization: The color coding is the same as on the “Stochastic Landau-Lifshitz-Gilbert (LLG) Dynamics on a $C_6$ Symmetric Lattice” page:
The left chart shows the horizontal and vertical displacement of the tracked skyrmion from its starting point (with crossings of the periodic boundary unwrapped). The right chart shows the $|B_z|$ profile and the row where the skyrmion is located.
Suggested Experiments:
Limitations: This is an illustrative model. With $D = J$ the skyrmions are only a few lattice constants across and include discrete-lattice effects; the Thiele equation assumes that the skyrmion keeps its shape. If the field in the weakest region becomes too low ($B_0 - A \lesssim 0.7$), the skyrmion can elongate and lose its shape. In experiments skyrmions are usually driven not by field gradients but by spin-polarized currents, and the skyrmion Hall effect has been observed in such experiments (Jiang et al., Nature Physics 13, 162 (2017); Litzius et al., Nature Physics 13, 170 (2017)). Current-driven motion fits into the same Thiele framework; only the force term changes.