FEM Airbox Mesh API¶
Last changes: Documentation changelog
1. What it is and when to use it¶
The airbox (universe) is the surrounding air volume around the magnetic objects, required to solve magnetostatics (stray field, demagnetization). Airbox authoring belongs to the universe, not to a ferromagnet:
exterior geometry:
study.universe(...),air sizing:
study.universe.mesh(...),magnetostatic realization (Poisson/Robin/PBC): separately via
study.demag(...).
When to use it: in every FEM scenario with an airbox demag model. Impact on the simulation: a too-small airbox corrupts boundary conditions of the stray field; a too-fine one costs unacceptably. Grading (section 2) gives resolution near objects and cheap elements far away.
2. Physical and mathematical explanation¶
The airbox is the solution domain of the magnetostatic equation for the scalar potential outside magnetic bodies:
where \(\phi\) — scalar potential (\(\mathrm{A}\)), \(\mu\) — permeability (\(\mathrm{H\,m^{-1}}\)). The air element size should grow with distance from the bodies (geometric grading), and the airbox extent must be large enough that the boundary condition (Dirichlet/Robin) does not distort the near field.
Symbol |
Meaning |
SI unit |
|---|---|---|
\(\phi\) |
scalar potential |
\(\mathrm{A}\) |
\(\mu\) |
magnetic permeability |
\(\mathrm{H\,m^{-1}}\) |
\(h_{\min}\), \(h_{\max}\) |
air element size bounds |
\(\mathrm{m}\) |
\(g\) |
maximum size growth rate |
\(1\) |
3. Example — complete Python script¶
# %% Airbox geometry and grading
import fullmag as fm
nm = 1.0e-9
study = fm.study("airbox_mesh_api_example")
study.engine("fem")
study.device("cpu", precision="double")
study.mode("strict")
# Exterior geometry of the universe / airbox:
study.universe(mode="manual", size=(800 * nm, 400 * nm, 300 * nm))
# Air sizing with geometric grading away from magnetic bodies:
study.universe.mesh(
minimum_element_size=8 * nm,
maximum_element_size=100 * nm,
maximum_element_growth_rate=1.3,
grading="geometric",
)
film = study.geometry(fm.Box(300 * nm, 100 * nm, 5 * nm), name="film")
film.Ms = 800.0e3
film.Aex = 13.0e-12
film.alpha = 0.02
film.m = fm.texture.uniform(1.0, 0.0, 0.0)
film.mesh(minimum_element_size=2.5 * nm, maximum_element_size=5 * nm)
# Magnetostatic realization is selected separately from mesh sizing:
study.exchange()
study.demag(model="airbox", variant="robin")
study.build_domain_mesh()
study.stages.add_relax(stage_id="equilibrium", tolT=1.0e-6)
4. Exact API¶
study.universe.mesh(**kwargs) (StudyUniverseMeshHandle, world.py):
Parameter |
Type |
Default |
Unit |
Validation |
Meaning |
|---|---|---|---|---|---|
|
|
|
\(\mathrm{m}\) |
positive |
minimum air element size |
|
|
|
\(\mathrm{m}\) |
positive |
maximum air element size |
|
|
|
\(1\) |
positive |
maximum size growth rate |
|
|
|
\(1\) |
e.g. |
grading type |
Advanced policy (universe resource advanced policy) additionally covers curvature and narrow-region resolution.
Failure behavior: cell_size (FDM) cannot be combined with FEM controls and vice
versa → ValueError; non-positive sizes → ValueError. Values are targets,
not guaranteed realized extrema.
ProblemIR mapping: universe policy lands in mesh workflow metadata (airbox hmin/hmax/growth/grading); realization and any fallbacks are recorded in the build report.
5. How to set it in Control Room¶
Model Explorer
└── Universe / Airbox → selection kinds: airbox.*
The Airbox Mesh Parameters inspector edits air sizing; exterior geometry
(size/padding/center) lives in the universe geometry panels; the magnetostatic
realization choice (study.demag) is made in the Physics/Demag panel. Full
description: FEM Airbox Mesh Panel.
6. Backend support¶
Solver |
Device |
Status |
Notes |
|---|---|---|---|
FEM |
CPU |
implemented |
Gmsh sizing + grading; report is authoritative |
FEM |
GPU |
capability-gated |
identical content-addressed mesh |
FDM |
CPU/GPU |
not applicable |
FDM uses Cartesian grids (FDM Meshing API) |
7. Limitations and known pitfalls¶
Airbox extent and boundary policy (
study.demag) are two different decisions; changing one does not fix the other.Size extrema are targets — check realized values in the build report.
8. Scientific bibliography¶
J. D. Jackson, Classical Electrodynamics, 3rd ed., Wiley, 1999.
C. Geuzaine and J.-F. Remacle, “Gmsh,” Int. J. Numer. Methods Eng. 79, 1309–1331 (2009).
9. Source-code index¶
Claim |
Path |
Symbol |
Evidence |
|---|---|---|---|
air sizing |
|
|
validation and |
universe geometry |
|
|
facade signature |
FDM/FEM mutual exclusion |
|
|
|
- Airbox Geometry API
- Python API
- Symbols and SI units
- Assumptions and validity
- 1. What it is and when to use it
- 2. Physical and mathematical explanation
- 3. Example — complete Python script
- 4. Exact API
- ProblemIR
- Round-trip and failure semantics
- Discrete realization
- 5. How to set it in Control Room
- 6. Backend support
- Validation
- 7. Limitations and known pitfalls
- 8. Scientific bibliography
- 9. Source-code index
- Source-code index
- Airbox Grading API
- Python API
- Symbols and SI units
- Assumptions and validity
- 1. What it is and when to use it
- 2. Physical and mathematical explanation
- 3. Example — complete Python script
- 4. Exact API
- ProblemIR
- Round-trip and failure semantics
- Discrete realization
- 5. How to set it in Control Room
- 6. Backend support
- Validation
- 7. Limitations and known pitfalls
- 8. Scientific bibliography
- 9. Source-code index
- Source-code index
- Airbox Build API
- Python API
- Symbols and SI units
- Assumptions and validity
- 1. What it is and when to use it
- 2. Physical and mathematical explanation
- 3. Example — complete Python script
- 4. Exact API
- ProblemIR
- Round-trip and failure semantics
- Discrete realization
- 5. How to set it in Control Room
- 6. Backend support
- Validation
- 7. Limitations and known pitfalls
- 8. Scientific bibliography
- 9. Source-code index
- Source-code index
Source-code index¶
This is a navigation page and introduces no standalone implementation symbol. The exact source-code index is maintained by the selected terminal page.