Dzyaloshinskii–Moriya interaction¶
Last changes: Documentation changelog
Fullmag exposes three distinct Dzyaloshinskii–Moriya interaction (DMI) variants: conventional interfacial DMI, isotropic bulk DMI, and rotated interfacial DMI. They have different symmetry, field operators, natural boundary terms, and backend restrictions. Boundary conditions and validation are cross-cutting pages, not additional DMI variants.
Physical problem¶
This page is the public physical and authoring contract for the interaction. It separates authored semantics, planner resolution, executable backend lanes, and scientific qualification.
Governing equations¶
For a constant oriented interface normal \(\hat{\mathbf n}\), the interfacial density is
Its bulk field is
For the canonical \(\hat{\mathbf n}=\hat{\mathbf z}\) thin-film case this gives \((2D_{\mathrm i}/\mu_0M_s) (\partial_xm_z,\partial_ym_z,-\partial_xm_x-\partial_ym_y)\).
Bulk DMI uses
The sign of \(D\), the interface-normal orientation, and the coordinate handedness jointly determine chirality. None may be silently changed during normalization.
Symbols and SI units¶
Symbol |
Meaning |
SI unit |
|---|---|---|
\(D_{\mathrm i},D_{\mathrm b}\) |
interfacial and bulk DMI coefficients |
\(\mathrm{J\,m^{-2}}\) |
\(\hat{\mathbf n}\) |
oriented interface normal |
\(1\) |
\(w_{\mathrm i},w_{\mathrm b}\) |
energy density |
\(\mathrm{J\,m^{-3}}\) |
\(\mathbf H_{\mathrm i},\mathbf H_{\mathrm b}\) |
DMI effective field |
\(\mathrm{A\,m^{-1}}\) |
Boundary conditions and validity¶
For an open boundary, exchange and DMI must be varied together; applying a pure Neumann exchange condition while retaining DMI generally loses the chiral boundary twist. Periodic boundaries remove that exterior surface term but require consistent periodic neighbor mapping.
The FDM interfacial path is restricted to the canonical \(+\hat{\mathbf z}\) normal. FEM may represent a general finite non-zero normal. Bulk-DMI FDM support is subject to the planner’s periodicity and topology restrictions. Spatial coefficient fields must match the realized mesh.
Backend capability matrix¶
Solver |
Device |
Authoring / IR |
Executable realization |
Scientific qualification |
Exact boundary |
|---|---|---|---|---|---|
FDM |
CPU |
explicit/material coefficient |
reference executable |
bounded stencil tests |
interfacial normal fixed to +z; topology restrictions apply |
FDM |
GPU |
same canonical intent |
implemented |
device parity workload-specific |
FP32/FP64 kernels and separate energy reduction |
FEM |
CPU |
scalar/spatial material routes |
implemented |
weak-form and mesh convergence required |
general oriented interfacial normal |
FEM |
GPU |
same resolved FEM IR |
implemented |
executed-device qualification separate |
resident residual, projection, and reduction |
Python API and stage-first example¶
# %% Study, execution lane, and magnetic body
import fullmag as fm
nm = 1.0e-9
study = fm.study("interfacial_dmi_reference")
study.engine("fem")
study.device("cpu", precision="double")
study.mode("strict")
study.objects.mesh.defaults(cell_size=(2 * nm, 2 * nm, 2 * nm))
body = study.geometry(fm.Box(40 * nm, 20 * nm, 4 * nm), name="film")
body.Ms = 8.0e5
body.Aex = 13.0e-12
body.alpha = 0.02
body.m = fm.texture.uniform(1.0, 0.0, 0.0)
body.Ku1 = 4.7e5
body.anisU = (0.0, 0.0, 1.0)
body.dind = 3.0e-3 # J/m^2
study.demag(realization="poisson_robin")
study.stages.add_relax(stage_id="relax", algorithm="llg_overdamped", dt=5.0e-13, max_steps=500, tolT=1.0e-6)
The study facade already supports material-owned interfacial DMI. It must not be documented as unregisterable.
Explicit constructors remain useful for IR tests:
ProblemIR and coefficient ownership¶
{
"kind": "interfacial_dmi",
"D": 0.003,
"interface_normal": [0.0, 0.0, 1.0]
}
Material-owned and explicit routes are alternative coefficient sources; they must not be silently added. Resolved execution records normalized normal, scalar versus spatial coefficient, mesh, boundary policy, solver, device, and precision.
Validation boundary and required code corrections¶
InterfacialDMI.__init__ currently checks vector length/conversion but not finite values or
non-zero norm. Those checks occur later and should either be documented there or moved into the
constructor. The Material.Dbulk warning and public coefficient contract use
\(\mathrm{J\,m^{-2}}\).
Required numerical validation¶
one-dimensional cycloid/helix with the expected wave vector and chirality;
sign reversal under \(D\to-D\);
interfacial normal reversal with an explicitly defined convention;
exchange+DMI natural-boundary twist;
finite-difference energy/field consistency;
periodic translation invariance for bulk DMI;
mesh refinement and matched CPU/GPU comparisons;
skyrmion/domain-wall benchmarks that state all sign conventions.
Limitations and recommended extensions¶
FDM support for arbitrary interface normals, curved local normals, interface-local DMI, and heterogeneous tensor DMI requires new typed operators. Do not approximate these by rotating only the magnetization while leaving the grid stencil unchanged.
Scientific bibliography¶
A. Fert, V. Cros, and J. Sampaio, Nature Nanotechnology 8, 152–156 (2013).
S. Rohart and A. Thiaville, Physical Review B 88, 184422 (2013), DOI: 10.1103/PhysRevB.88.184422.
A. N. Bogdanov and D. A. Yablonskii, Soviet Physics JETP 68, 101 (1989).
Control Room crosswalk¶
This is a navigation page; the selected interaction or foundation is configured by its linked Python API and object/stage editor. The category itself has no standalone control. frontend support is not implemented applies to physical parameters without a matching control. See {doc}/frontend/capability-register; do not infer UI support from backend or Python availability.
Python/API crosswalk¶
The linked Python API page is authoritative for exact functions, arguments, units, and failure semantics. If this page is a foundation or category overview, runnable Python is ot applicable here and must be taken from the terminal API page.
Bibliography and source scope¶
Use the scientific bibliography and source-code index on the linked terminal page. This block adds no new equation or unverified implementation claim.
Round-trip and failure semantics¶
Requested intent preserves the authored model, coefficients, orientations, targets, and execution request. Resolved execution records the selected solver, device, precision, discretization, and capability decision. Validation errors reject malformed or contradictory data before runtime. Unsupported combinations fail closed and are not silently omitted or converted to another interaction.
Implementation mapping¶
Python owns authoring and serialization, ProblemIR owns canonical intent, planners own legality and realization selection, and backend kernels own numerical evaluation.
Source-code index¶
Repository path |
Stable symbol / area |
Responsibility |
|---|---|---|
|
|
explicit authoring |
|
|
canonical material coefficients |
|
|
stage-first |
|
|
FDM normal, topology, and field resolution |
|
|
FEM coefficient/normal resolution |
|
|
FEM CPU weak residual |
|
|
FEM CPU bulk operator |
|
|
FDM GPU realization |
|
|
FEM GPU realization |