MIME-VER-132 — Misalignment-Induced Field Tilt at the UMR#
Date: 2026-04-30
Producer under test: mime.nodes.actuation.permanent_magnet.PermanentMagnetNode
Algorithm ID: MIME-NODE-101
Benchmark type: Mode 2 (Analytical)
Test file: tests/verification/test_actuation_chain_equivalence.py::test_ver132_misalignment_field_tilt
Acceptance: field-tilt angle at the UMR position grows strictly monotonically with the magnet’s lateral offset over a 0–6 mm sweep; on-axis tilt < 1°
Goal#
Verify the upstream cause of the misalignment-induced step-out
reduction described in the approved plan
(/home/nick/.claude/plans/hi-familiarize-yourself-with-giggly-toucan.md).
The user’s stated phenomenon:
Slight misalignment with the actuator (i.e. not directly above) causes the UMR propulsion vector to be slightly non-parallel with the vessel. This effect increases as the offset increases.
This benchmark isolates the field-side cause — the dipole field at the UMR location tilts off the vessel-perpendicular plane as the magnet moves laterally. Downstream, that tilt drives the UMR axis to follow it (via \(T = m \times B\)), which produces the wobble and the lateral wall pressure that ultimately reduces step-out.
A direct benchmark of step-out reduction requires a calibrated
ContactFrictionNode, which is out of scope for this plan (per
plan §”Out of Scope”). The plan therefore declares MIME-VER-132’s
quantitative tolerance on UMR-axis tilt deferred until that
calibration lands; here we assert the upstream cause’s monotonicity,
which is a falsifiable claim about the dipole field formula.
Configuration#
Parameter |
Value |
|---|---|
Magnet standoff \(z\) |
0.05 m |
Magnet rotation rate |
10 Hz about \(+\hat z\) |
Magnet geometry |
\(R = 1\) mm, \(L = 2\) mm |
Field model |
|
Lateral offsets swept |
0, 1, 2, 4, 6 mm (in \(+\hat x\)) |
Target |
UMR at origin |
\(\Delta t\) |
\(10^{-4}\) s |
Procedure#
For each offset:
Spin the motor up to its commanded \(\omega = 2\pi \cdot 10\) Hz at the standoff with the lateral offset applied to its parent pose.
Sample the magnet’s instantaneous \(B\)-field at the UMR (origin) over one full rotation period.
Take a sample after spin-up and compute the tilt angle of \(B\) off the xy plane: \(\arcsin(|B_z| / |B|)\).
Assert:
The list of tilt angles is strictly monotonically increasing with offset.
The on-axis (offset = 0) tilt is below 1°.
Result#
PASS when both checks hold.
The on-axis tilt is small (not exactly zero because the motor is in a brief PI-startup transient when the snapshot is taken, and the dipole formula evaluated at one instant is not exactly co-planar with the xy plane unless the dipole vector is also in the xy plane at that instant).
Scope and Limitations#
This benchmark validates the field-side chain only (i.e., the output of
PermanentMagnetNode). Whether the UMR’s axis tilts as predicted by \(T = m \times B\) requires a coupled simulation, which is the subject of follow-on work onceContactFrictionNodeis calibrated.The dipole-only formula is valid here because the standoff is in the far-field regime (\(z \approx 50 R_{\text{magnet}}\)). At smaller standoffs the bench would need to switch to
current_looporcoulombian_poles.
Reproducibility#
JAX precision: x64.
Run:
JAX_PLATFORMS=cpu .venv/bin/python -m pytest tests/verification/test_actuation_chain_equivalence.py::test_ver132_misalignment_field_tilt -x -q.