Discretization Hints

Last changes: Documentation changelog

Contract

This page records the current public Python authoring contract and canonical lowering; it does not redefine solver physics.

Governing equations

This API page introduces no independent governing equation. Physical equations belong to interaction and solver-lane pages.

Symbols and SI units

Every owned input has its SI unit below; \(1\) denotes dimensionless data.

Assumptions and validity

Constructor checks run immediately. Lowering and planning additionally check mesh cardinality, capability, and backend legality.

Python API

Python

Type

Default

SI unit

Validation

Meaning

Backend support

ProblemIR

DiscretizationHints.fdm

FDM | None

None

\(1\)

FDM-specific hint; it does not force FDM when backend selection remains auto.

FDM-specific hint; it does not force FDM when backend selection remains auto.

FEM/FDM CPU/GPU; planner checks combinations

backend_policy.discretization_hints.fdm

DiscretizationHints.fem

FEM | None

None

\(1\)

FEM-specific hint; it does not force FEM when backend selection remains auto.

FEM-specific hint; it does not force FEM when backend selection remains auto.

FEM/FDM CPU/GPU; planner checks combinations

backend_policy.discretization_hints.fem

DiscretizationHints.hybrid

Hybrid | None

None

\(1\)

Optional hybrid hint.

Optional hybrid hint.

FEM/FDM CPU/GPU; planner checks combinations

backend_policy.discretization_hints.hybrid

Complete stage-first selection example

Hints are consumed as part of a complete study request. The example below selects the FDM lane; the same stage structure is used when the request is changed to FEM.

# %% Discretization choice plus executable stages
import fullmag as fm

nm = 1.0e-9
study = fm.study("discretization_hints_example")
study.engine("fdm")
study.device("cpu", precision="double")
study.mode("strict")
study.objects.mesh.defaults(cell_size=(2 * nm, 2 * nm, 5 * nm))
study.exchange()
film = study.geometry(fm.Box(100 * nm, 20 * nm, 5 * nm), name="film")
film.Ms = 800.0e3
film.Aex = 13.0e-12
film.alpha = 0.02
film.m = fm.init.UniformMagnetization((1.0, 0.0, 0.0))
study.solver(integrator="rk45", fix_dt=1.0e-15, gamma=2.211e5)
study.stages.add_run(stage_id="run", until=1.0e-9)

ProblemIR

The final column gives the serialized destination owned by the current lowering implementation.

Round-trip and failure semantics

Requested intent is preserved in Python and IR. Resolved execution is selected by the planner. Validation errors reject malformed values; unsupported combinations fail capability checks without silent fallback.

Discrete realization

This page owns authoring and lowering only; numerical realization belongs to solver-lane documentation.

Implementation mapping

The adjacent map anchors claims to packages/fullmag-py/src/fullmag/model/discretization.py and class DiscretizationHints.

Validation

Tests compare this inventory with live signatures and validate its source map.

Limitations

Representability does not prove every backend combination executable; planner capabilities are authoritative.

Scientific bibliography

No physical model is introduced. Primary references belong to consuming interaction pages.

Control Room crosswalk

Status: Advertised global/object mesh controls are partial; compatibility-only fields remain not implemented.

Python/API surface

Control Room path

Status

Transaction

Parameters documented on this page

Model Explorer -> Study or Objects -> <object> -> Mesh

partial

Apply mesh policy or Build Mesh; mesh resources become stale

Parameters without a named UI field

Model Explorer -> Study or Objects -> <object> -> Mesh

not implemented

Python-only until implemented

frontend support is not implemented for discretization parameters not represented by the mesh panels. See Control Room capability register for the support matrix and not implemented policy. Frontend source owner: apps/control-room/src/modules/inspector/panels/ObjectMeshPolicyPanel.tsx (ObjectMeshPolicyPanel).

Source-code index

Claim

Path

Stable symbol

Responsibility

Evidence

Constructor, validation, lowering

packages/fullmag-py/src/fullmag/model/discretization.py

class DiscretizationHints

Canonical Python API behavior

Ownership test and source-map validator