Zeeman interaction¶
Last changes: Documentation changelog
The Zeeman interaction couples magnetization to a prescribed external magnetic field. Fullmag authors the public field as magnetic flux density \(\mathbf B_{\mathrm{ext}}\) in tesla and converts it once to \(\mathbf H_{\mathrm{ext}}\) in amperes per metre.
Physical problem¶
The prescribed field is external input and is not solved self-consistently. This page separates authored semantics, planner resolution, executable backend lanes, and scientific qualification.
Governing equations¶
The corresponding effective field is exactly the prescribed field:
A positive field lowers the energy of magnetization aligned with it. Reversing \(\mathbf B_{\mathrm{ext}}\) reverses the field and the signed energy.
Symbols and SI units¶
Symbol |
Meaning |
SI unit |
|---|---|---|
\(\mathbf B_{\mathrm{ext}}\) |
authored external flux density |
\(\mathrm T\) |
\(\mathbf H_{\mathrm{ext}}\) |
external magnetic field |
\(\mathrm{A\,m^{-1}}\) |
\(\mathbf M\) |
magnetization |
\(\mathrm{A\,m^{-1}}\) |
\(\mathbf m\) |
reduced magnetization |
\(1\) |
\(E_{\mathrm Z}\) |
Zeeman energy |
\(\mathrm J\) |
\(\mu_0\) |
vacuum permeability |
\(\mathrm{N\,A^{-2}}\) |
\(\Omega_m\) |
magnetic domain |
not applicable |
\(\mathrm dV\) |
volume measure |
\(\mathrm{m^3}\) |
Assumptions and validity¶
Zeeman is a prescribed-field interaction. It does not solve Maxwell equations, inductive
coupling, eddy currents, or the field generated by transport current. A zero field is legal.
Spatial maps and antenna/RF drives are separate field-source contracts and must not be
silently represented as a constant vector.
Backend capability matrix¶
Solver |
Device |
Authoring / IR |
Executable realization |
Scientific qualification |
Exact boundary |
|---|---|---|---|---|---|
FDM |
CPU |
|
implemented |
analytic sign and scaling tests |
uniform field sampled on active cells |
FDM |
GPU |
same canonical intent |
implemented |
device parity is precision-specific |
field upload/residency must be recorded |
FEM |
CPU |
same canonical intent |
implemented |
mesh-independent uniform-field oracle |
resolved on magnetic nodes/elements |
FEM |
GPU |
same canonical intent |
implemented |
executed-device parity required |
no host fallback under strict GPU request |
Python API and stage-first example¶
# %% Study, execution lane, and magnetic body
import fullmag as fm
nm = 1.0e-9
study = fm.study("zeeman_reference")
study.engine("fdm")
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)
study.exchange()
study.b_ext(0.0, 0.0, 0.1) # tesla
study.stages.add_run(stage_id="precession", until=1.0e-12)
Validation boundary¶
At the audited revision, Zeeman.__init__ uses as_vector3: it validates length and float
conversion, but it does not itself reject NaN or infinity. Finite-value rejection must
therefore be documented at the ProblemIR/planner boundary unless the constructor is hardened.
The recommended code change is to use a finite-vector validator so malformed input fails at the
earliest public boundary.
ProblemIR and observables¶
{"kind": "zeeman", "B": [0.0, 0.0, 0.08]}
Expected observables are B_ext in tesla, H_ext in \(\mathrm{A\,m^{-1}}\), and
E_ext in joules. Quantity naming must not obscure the one-time
\(\mathbf B/\mu_0\) conversion.
Required numerical validation¶
exact vector conversion \(\mathbf H=\mathbf B/\mu_0\);
uniform macrospin energy for parallel, perpendicular, and antiparallel states;
odd symmetry under field reversal;
zero-field exact zero contribution;
time-dependent precession frequency against the selected LLG \(\gamma\) convention;
matched CPU/GPU field and energy comparisons.
Limitations and recommended extensions¶
Add a first-class spatial field-map page and a field-schedule page rather than expanding
Zeeman(B) with unrelated payloads. Every extension must state whether its source is sampled at
stage start, every accepted step, or every RHS evaluation.
Scientific bibliography¶
W. F. Brown, Micromagnetics, Wiley, 1963.
G. Bertotti, Hysteresis in Magnetism, Academic Press, 1998.
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 |
|---|---|---|
|
|
public constructor and IR |
|
|
current constructor-level vector validation |
|
|
stage-first field authoring |
|
|
FDM resolution |
|
|
FEM resolution |
|
|
FDM CPU reference |
|
|
FDM GPU |
|
|
FEM CPU |
|
|
FEM GPU |