Qualification Status¶
Last changes: Documentation changelog
Qualification is per workload, per lane, and evidence-backed. The table below is the current production status for the relaxation workload; other workloads (time-domain reversal, spectral response, GPU strict residency) have their own gates and must not inherit relaxation status.
Relaxation algorithm and lane matrix¶
Algorithm |
FDM CPU |
FDM CUDA |
FEM CPU |
FEM CUDA |
Status |
|---|---|---|---|---|---|
|
qualified |
qualified |
qualified |
qualified |
production |
|
qualified |
qualified for supported payloads |
qualified, demag |
qualified, demag |
production |
|
qualified |
qualified for supported payloads |
qualified, demag |
qualified, demag |
production |
|
unsupported |
unsupported |
development-only ( |
unsupported |
development-only, fail-closed elsewhere |
Unsupported heterogeneous CUDA material payloads and unsupported adaptive/tableau combinations fail capability checks; no lane silently substitutes Heun, CPU execution, another minimizer, or a looser physical model.
Evidence basis¶
The relaxation promotion is backed by the managed production benchmark (39 comparison pairs,
21/21 required coverage), managed native source/operator/energy-derivative contracts, and
CPU/GPU consistency 6/6 rows / 3/3 pairs. The public method pages under
Relaxation document the per-algorithm contracts this matrix
summarizes.
Frozen-spins qualification¶
frozen_spins constraints are implemented via the typed FrozenSpins contract in API and planner
inputs, and they are governed by docs/validation/frozen-spins-v1-scope.yaml
(scope_revision: 1, product_version: frozen_spins.v1).
Feature coverage is tracked in a separate lane-agnostic gate path with dedicated scopes and test sets, including:
selector and membership behavior;
reference mode semantics (
capture_current_at_activation,initial_state,explicit_field_asset);empty/inactive selection policy;
stage activation semantics, resume portability, and visualization support.
Operationally this is exercised through dedicated commands (for example
just verify-frozen-spins-qualification and scope/gate companions) rather than by inference from
the relaxation matrix.
Frozen-spins kwalifikacja — układ jednolitego wpisu (kod + Python + bibliografia)¶
1) Wprowadzenie¶
frozen_spins is a typed stage-aware constraint contract, not a solver-side “shortcut”.
The public gate path is strict: payload-level validation happens before planning, and unsupported
combinations fail closed.
2) Implementacja bezpośrednio z kodu (100%)¶
FrozenSpinsis defined inpackages/fullmag-py/src/fullmag/model/constraints.pyand validates:id,selector,name,enabled,reference,membership,activation,stage_ids,empty_selection,inactive_selection.ObjectRegion.freeze_spins(...)(same file:structure.py) buildsFrozenSpinsviain_region_selection(...).Ferromagnet.freeze_spins(...)(same file:structure.py) buildsFrozenSpinsviain_object_selection(...).The stage-aware study/solver contract keeps this intent in
ProblemIRand resolves only in planner/runtime.
3) Implementacja w Pythonie (bezpośredni wzorzec)¶
import fullmag as fm
from fullmag.model.constraints import FrozenSpins
from fullmag.model.selection import in_region_selection
nm = 1.0e-9
study = fm.study("frozen_constructor_example")
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 = 800.0e3
body.Aex = 13.0e-12
body.m = fm.texture.uniform(1.0, 0.0, 0.0)
study.stages.add_run(stage_id="run", until=1.0e-12)
# Direct constructor (public source class contract)
frozen = FrozenSpins(
id="film_frozen",
selector=in_region_selection("film", "all"),
reference="capture_current_at_activation",
membership=None,
empty_selection="error",
inactive_selection="warn_and_intersect",
)
import fullmag as fm
nm = 1.0e-9
study = fm.study("frozen_region_example")
study.engine("fdm")
study.device("cpu", precision="double")
study.mode("strict")
study.objects.mesh.defaults(cell_size=(2 * nm, 2 * nm, 2 * nm))
film = study.geometry(fm.Box(40 * nm, 20 * nm, 4 * nm), name="film")
film.Ms = 800.0e3
film.Aex = 13.0e-12
film.m = fm.texture.uniform(1.0, 0.0, 0.0)
film_region = film.add_region("core", fm.Box(20 * nm, 20 * nm, 4 * nm))
frozen_region = film_region.freeze_spins(
id="film_frozen_region",
reference="capture_current_at_activation",
membership="snapshot_at_activation",
stage_ids=("run",),
)
study.stages.add_run(stage_id="run", until=1.0e-12)
4) Funkcje i argumenty (z kodu źródłowego)¶
Funkcja |
Argumenty i znaczenia |
|---|---|
|
|
|
Region-scoped freeze helper; id defaults to |
|
Object-scoped freeze helper; requires explicit |
|
Sequence of |
5) Referencje do kodu¶
packages/fullmag-py/src/fullmag/model/constraints.py:137(class FrozenSpins,__init__)packages/fullmag-py/src/fullmag/model/structure.py:516(ObjectRegion.freeze_spins)packages/fullmag-py/src/fullmag/model/structure.py:769(Ferromagnet.freeze_spins)packages/fullmag-py/src/fullmag/model/problem.py(Problemaggregate and constraint lowering)packages/fullmag-py/src/fullmag/model/study.py(TimeEvolutiontransport and constraints handling)
6) Bibliografia¶
Abert, C. “Micromagnetics and spintronics: models and numerical methods,” European Physical Journal B 92, 120 (2019), doi:10.1140/epjb/e2019-90599-6.
Open Source FullMag codebase, frozen-spins constraint implementation and qualification scopes (current repository state).
Per-interaction support matrices¶
Physics and numerical terminal pages own their four-lane FDM/FEM CPU/GPU support and qualification matrices. Those are the authoritative support status for an interaction; do not use the relaxation table above to claim an interaction is validated outside relaxation. Start from:
Physical Interactions — canonical interaction pages;
Numerical Methods — method and solver-lane realizations.
Not yet qualified¶
Time-domain NIST SP4 reversal (artifact
not_evaluated/unvalidated).GPU strict-residency and hosted CPU/GPU field parity rerun in the CUDA-visible runtime.
Full FDM↔FEM cross-backend comparison matrix.
Frozen-spins lane-agnostic qualification and artifact promotion are tracked by their dedicated frozen-spins gates and are not implied by this relaxation table.
These remain open until their dedicated gates pass with recorded artifacts.
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.