FEM Study Defaults¶
Last changes: Documentation changelog
The typed low-level constructor is:
fm.FEM(order=1, maximum_element_size=20e-9)
hmax= is an alias for maximum_element_size=. The stage-first facade usually captures equivalent
intent through study and object mesh methods. Study defaults have the lowest precedence below
explicit object recipes and mesh-workflow overrides.
demag_solver_policy configures the algebraic Poisson solve; it does not change element geometry.
Python API¶
The complete runnable example is in the numbered example section below; the exact callable fields and arguments are in the numbered API section. These values are copied from the current Python contract, not inferred from the UI.
Symbols and SI units¶
All geometric lengths use \(\mathrm{m}\); dimensionless selectors use \(1\).
Assumptions and validity¶
Authoring validation does not prove mesh generation or solver qualification; the realized report is authoritative.
1. What it is and when to use it¶
FEM stores study-level finite-element defaults. Use it as the lowest-
precedence FEM policy; explicit object recipes, airbox settings, and workflow
overrides take precedence where defined.
2. Physical and mathematical explanation¶
This is an authoring policy and introduces no new physical equation. order
and maximum_element_size select the finite-element approximation and global
target; demag_solver_policy configures the algebraic solve separately.
3. Example - complete Python script¶
# %% FEM study defaults through the stage-first builder
import fullmag as fm
nm = 1.0e-9
study = fm.study("fem_study_defaults")
study.engine("fem")
study.device("cpu", precision="double")
study.mode("strict")
study.objects.mesh.defaults(order=1, maximum_element_size=20 * nm)
body = study.geometry(fm.Box(80 * nm, 40 * 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.exchange()
study.demag(realization="poisson_robin")
study.build_domain_mesh()
study.stages.add_relax(
stage_id="equilibrium",
algorithm="llg_overdamped",
tolA=1.0e-4,
max_steps=1_000,
)
4. Exact API¶
Parameter/function |
Signature or type |
Default |
SI unit |
Validation |
Meaning |
|---|---|---|---|---|---|
|
|
size required |
mixed |
order >= 1; positive size; matching aliases |
low-level FEM policy |
|
|
required |
\(1\) |
integer >= 1 |
finite-element order |
|
|
required |
\(\mathrm{m}\) |
strictly positive |
global hmax target |
|
property |
derived |
\(\mathrm{m}\) |
mirrors maximum size |
compatibility alias |
|
|
current state |
\(1\) |
delegated validation |
stage-first order setter |
|
|
current state |
\(\mathrm{m}\) or preset |
delegated validation |
stage-first size setter |
Supplying both size aliases requires equal values; missing size, booleans, or invalid order fail during construction. Solver policy is serialized separately from mesh geometry.
ProblemIR¶
The request lowers to the mesh-workflow or discretization subtree; requested intent remains distinct from the resolved mesh asset and provenance report.
Round-trip and failure semantics¶
Requested intent is the Python policy; resolved execution is the realized mesh report. Validation errors identify the violated domain rule, and unsupported combinations fail explicitly without silent fallback.
Discrete realization¶
The backend consumes the realized Cartesian or finite-element asset, including topology, markers, quality, and provenance where available.
5. How to set it in Control Room¶
Route: Model Explorer -> Study -> Discretization -> FEM defaults. Set global
order and maximum element size, press Apply, then Build Shared-Domain
Mesh. Object and airbox overrides are edited in their own Mesh panels.
not implemented: frontend support for low-level FEM(mesh=...) or solver-policy fields
not rendered by the study editor. See Control Room capability register.
6. Backend and frontend support¶
Lane |
Status |
Notes |
|---|---|---|
FEM CPU/GPU |
authoring implemented; runtime-gated |
Defaults are planner-resolved. |
FDM CPU/GPU |
not applicable |
Use FDM cell policies. |
Control Room |
partial |
Core order/size fields are exposed; all aliases are not guaranteed. |
Validation¶
Focused constructor, lowering, and mesh-report tests are the evidence boundary for this page.
7. Limitations and known pitfalls¶
Study defaults have lower precedence than explicit object/workflow policies.
hmaxis an alias, not a second independent value.A policy object does not materialize or qualify a mesh by itself.
8. Scientific bibliography¶
P. G. Ciarlet, The Finite Element Method for Elliptic Problems, SIAM, 2002.
C. Geuzaine and J.-F. Remacle, “Gmsh: a three-dimensional finite element mesh generator,” International Journal for Numerical Methods in Engineering 79, 1309-1331 (2009), doi:10.1002/nme.2579.
9. Source-code index¶
Claim |
Repository path |
Stable symbol |
Evidence |
|---|---|---|---|
FEM constructor and aliases |
|
|
source implementation |
stage-first setters |
|
|
builder delegation |
mesh materialization |
|
|
public build entrypoint |
Source-code index¶
Python contract source:
packages/fullmag-py/src/fullmag/model/discretization.pyandpackages/fullmag-py/src/fullmag/world.py, where applicable. Backend realization is in the relevantbackends/fdmorbackends/femlane named by the page.
Source-map coverage¶
Claim |
Path |
Stable symbol |
Responsibility |
Evidence |
|---|---|---|---|---|
Study-level FEM mesh policy. |
|
|
Study-level FEM mesh policy. |
Source-map validator and focused API tests |
Shared-domain assembly defaults. |
|
|
Shared-domain assembly defaults. |
Source-map validator and focused API tests |