µMAG Standard Problems¶
Last changes: Documentation changelog
µMAG standard problems are community reference benchmarks with published reference outputs. FullMag’s primary standard-problem target is NIST µMAG Standard Problem 4 (SP4), solved with the strict FEM backend in double precision.
Problem definition¶
SP4 is a \(500 \times 125 \times 3\ \mathrm{nm}\) permalloy film with saturation magnetization \(M_s = 800\,000\ \mathrm{A\,m^{-1}}\), exchange stiffness \(A_{\mathrm{ex}} = 1.3 \times 10^{-11}\ \mathrm{J\,m^{-1}}\), and damping \(\alpha = 0.02\). An S-shaped magnetization state is relaxed, then one of two applied fields drives a dynamic reversal:
field 1: \(\mathbf{B} = (-24.6, 4.3, 0)\ \mathrm{mT}\);
field 2: \(\mathbf{B} = (-35.5, -6.3, 0)\ \mathrm{mT}\).
The canonical observable is the volume-weighted average of the reduced magnetization; the first zero-crossing of \(\bar m_x\) is compared against the NIST reference corpus (NIST is authoritative, MuMax3/OOMMF endpoint values are supplementary regression metrics only).
FullMag setup¶
Meshes: magnetic element sizes \(3.0\), \(2.0\) and \(1.5\ \mathrm{nm}\); airboxes \(700^3\ \mathrm{nm}\) and \(1000 \times 500 \times 500\ \mathrm{nm}\) with
airbox_hmax = 20 nm.SP4 relaxation uses a strict mixed-prism thin-film route in strict mode:
film.mesh.thin_film(..., layers=1, topology="prismatic", exact_layers=True, transition="pyramid_to_tetrahedra", order=1). The topology-only mesh contract is intests/standard_problems/mumag/sp4/fem/scenarios/mesh_single_prism_layer.py.Lanes: strict FEM CPU and strict FEM GPU in double precision; GPU demagnetization must resolve to
device_hypre_poisson, neverhybrid_cpu_poisson.Observables use native \(M_s \times V\) lumped-volume averages from
scalars.csv; unweighted node averages are not accepted as the NIST observable.Uninterrupted trajectories are sampled every \(1\ \mathrm{ps}\); replay runs start from the same S-state and stop at the bracketing zero-crossing.
The public stage scenario is
tests/standard_problems/mumag/sp4/fem/scenarios/relax_projected_gradient_bb.py, and the managed
gate is:
just verify-fem-standard-problem-4
Standardowy wpis SP4 w układzie source-first (wprowadzony z kodu)¶
1) Wprowadzenie¶
SP4 w publicznej kwalifikacji używa tego samego łańcucha: przygotowanie scenariusza ➜
strict topology w meshowaniu ➜ zarządzany scenariusz sprawdzający (verify-fem-standard-problem-4) ➜ bramki NIST/konwergencji/CPU-GPU.
2) Wersja „wyjęta” bezpośrednio z kodu¶
W pliku testowym scenariusza i testach siatki widać wymagane ustawienia:
tests/standard_problems/mumag/sp4/fem/scenarios/mesh_single_prism_layer.pybuduje geometrię i ograniczenia meshu;tests/standard_problems/mumag/sp4/fem/scenarios/relax_projected_gradient_bb.pyuruchamia przebieg relaksacji NIST SP4;packages/fullmag-py/tests/test_mixed_element_meshing.pywaliduje profilprism6+pyramid5+tet4.
Dla trasy mesh:
GeometryMeshHandle.thin_film(...)→topology="prismatic",exact_layers=True,transition="pyramid_to_tetrahedra",order=1
3) Jak to zaszyć w Pythonie (bezpośrednio)¶
import fullmag as fm
from fullmag.select import in_object
study = fm.study("sp4_strict")
study.engine("fem")
study.device("cpu", precision="double")
study.mode("strict")
study.universe(
mode="manual",
size=(800e-9, 400e-9, 200e-9),
center=(0.0, 0.0, 0.0),
padding=(0.0, 0.0, 0.0),
)
study.universe.mesh(maximum_element_size=100e-9)
film = study.geometry(
fm.Box(500e-9, 125e-9, 3e-9),
name="film",
object_id="film",
)
film.Ms = 800.0e3
film.Aex = 13.0e-12
film.m = fm.texture.uniform(1.0, 0.0, 0.0)
film.mesh(
topology="prismatic",
exact_layer_count=True,
through_thickness_elements=1,
through_thickness_distribution="fixed",
transition_policy="pyramid_to_tetrahedra",
order=1,
mesh_strategy="swept_prism",
sweep_face_meshing="triangular",
sweep_direction="auto",
element_family="prism",
)
frozen = fm.FrozenSpins(
id="sp4_init_fixed",
selector=in_object("film"),
stage_ids=("relax",),
)
study.stages.add_relax(
stage_id="relax",
dt=5.0e-13,
max_steps=1,
constraints=(frozen,),
)
4) Funkcje i argumenty (użyte bezpośrednio)¶
Funkcja |
Argumenty, które są istotne dla SP4 |
|---|---|
|
|
|
|
|
|
|
pełny kontrakt konfiguracji rozmiaru, jakości, warstw i strategii jest przekazywany po stronie thin-film |
5) Referencje do kodu¶
tests/standard_problems/mumag/sp4/fem/scenarios/mesh_single_prism_layer.pytests/standard_problems/mumag/sp4/fem/scenarios/relax_projected_gradient_bb.pypackages/fullmag-py/src/fullmag/world.py(GeometryMeshHandle.thin_film, walidacjatopology="prismatic")packages/fullmag-py/src/fullmag/model/discretization.py(PerObjectMeshRecipe,PerObjectMeshLayeredRecipe)packages/fullmag-py/tests/test_mixed_element_meshing.py
6) Bibliografia¶
MuMax3/SP4 reference datasets and NIST SP4 artifacts (public NIST benchmark references used as acceptance target).
Abert, C. “Micromagnetics and spintronics: models and numerical methods,” European Physical Journal B 92, 120 (2019), doi:10.1140/epjb/e2019-90599-6.
Current status¶
Relaxed S-state and reversal-run artifacts exist for FEM CPU and FEM GPU
(coarse/baseline). The time-domain qualification record currently reports
not_evaluated / unvalidated for the adaptive RK runs: artifact creation alone is not evidence
of validation, and the dedicated NIST/convergence/CPU-GPU/no-fallback gate has not yet been
closed. Do not treat this page as a claim that SP4 is physics-validated.
SP4 acceptance requires, per lane: NIST trajectory agreement, mesh and airbox convergence, CPU/GPU parity within the documented tolerances, and no silent fallback. Status advances only when the full managed gate passes.
Control Room crosswalk¶
Validation pages are inspection-only in Control Room. The UI may expose runtime metadata, fields, tables, or reports for inspection, but it does not create a qualification claim. TODO: frontend support applies to validation workflow authoring and report publication unless a specific control is named. See Control Room capability register.
Python/API crosswalk¶
Validation is not a standalone Python constructor unless the linked case page names one. Reproduce the exact case, inputs, device, precision, and receipt described by the page; use the referenced API pages for callable signatures.
Physics and bibliography scope¶
The page either states the governing benchmark model or delegates it to the linked physics/numerical-methods page. Any missing derivation is a documented boundary, not an implicit equation. Bibliography and source evidence remain the authoritative references listed by the validation case.
Source-code index¶
No standalone implementation function is introduced by this validation page. Source evidence is the exact API, managed recipe, runtime manifest, and receipt named by the validation case.