Permanent Magnet Response Node#

Module: mime.nodes.robot.permanent_magnet_response Stability: experimental Algorithm ID: MIME-NODE-008 Version: 1.0.0 Verification Mode: Mode 2 (Independent)

Summary#

Computes magnetic torque and force on a permanent-magnet microrobot body from an externally applied field. The magnetic moment is fixed in the body frame (rigid permanent magnet), rotated to the lab frame via the robot quaternion. No susceptibility tensor, no saturation, no volume multiplier.

Governing Equations#

Fixed moment in body frame: $$ \mathbf{m}{\text{body}} = n \cdot m{\text{single}} \cdot \hat{\mathbf{a}} $$

where $\hat{\mathbf{a}}$ is the normalised moment axis and $n$ is the number of magnets.

Rotate to lab frame: $$ \mathbf{m}{\text{lab}} = R(\mathbf{q}) , \mathbf{m}{\text{body}} $$

Magnetic torque (lab frame): $$ \mathbf{T} = \mathbf{m}_{\text{lab}} \times \mathbf{B} $$

Magnetic force (lab frame): $$ \mathbf{F} = (\nabla \mathbf{B}) , \mathbf{m}_{\text{lab}} $$

Discretization#

Analytical — no discretisation. Single-evaluation algebraic computation.

Implementation Mapping#

Equation Term

Implementation

Notes

$\mathbf{m}{\text{body}} = n \cdot m{\text{single}} \cdot \hat{\mathbf{a}}$

mime.nodes.robot.permanent_magnet_response.PermanentMagnetResponseNode.update

Fixed moment from constructor params

$\mathbf{m}{\text{lab}} = R(\mathbf{q}) \mathbf{m}{\text{body}}$

mime.nodes.robot.permanent_magnet_response.PermanentMagnetResponseNode.update

rotate_vector(q, m_body)

$\mathbf{T} = \mathbf{m}_{\text{lab}} \times \mathbf{B}$

mime.nodes.robot.permanent_magnet_response.PermanentMagnetResponseNode.update

jnp.cross(m_lab, B_lab)

$\mathbf{F} = (\nabla \mathbf{B}) \mathbf{m}_{\text{lab}}$

mime.nodes.robot.permanent_magnet_response.PermanentMagnetResponseNode.update

grad_B @ m_lab

Assumptions and Simplifications#

  1. Rigid permanent moment (no demagnetization)

  2. Moment axis fixed in body frame

  3. No temperature dependence of moment

Validated Physical Regimes#

Parameter

Verified Range

Notes

field_strength

0–0.1 T

NdFeB permanent magnet in mT-range field

Known Limitations and Failure Modes#

  1. No demagnetization effects

  2. No hysteresis

  3. No temperature-dependent moment

State Variables#

Field

Shape

Units

Description

magnetization

(3,)

A*m^2

Current magnetic moment (lab frame)

magnetic_torque

(3,)

N.m

Magnetic torque (lab frame)

magnetic_force

(3,)

N

Magnetic force (lab frame)

Parameters#

Parameter

Type

Default

Units

Description

n_magnets

int

1

-

Number of permanent magnets

m_single

float

1.07e-3

A*m^2

Magnetic moment per magnet

moment_axis

tuple

(0,1,0)

-

Moment direction in body frame

Boundary Inputs#

Field

Shape

Default

Coupling Type

Description

field_vector

(3,)

zeros

replacive

B field from ExternalMagneticFieldNode

field_gradient

(3,3)

zeros

replacive

dB/dx from ExternalMagneticFieldNode

orientation

(4,)

[1,0,0,0]

replacive

Quaternion from RigidBodyNode

Boundary Fluxes (outputs)#

Field

Shape

Units

Description

magnetic_torque

(3,)

N.m

To RigidBodyNode (additive)

magnetic_force

(3,)

N

To RigidBodyNode (additive)

MIME-Specific Sections#

Biocompatibility Context#

Default material: NdFeB N45. Biocompatibility NOT assessed — manufacturer must perform ISO 10993 evaluation. Typically encapsulated in biocompatible resin or parylene coating.

Clinical Relevance#

Computes the torque and force on an untethered magnetic robot (UMR) containing permanent magnets driven by an external rotating field. The step-out phenomenon occurs when the field rotation frequency exceeds the maximum torque capacity of the permanent magnets.

References#

  • [@deBoer2025] de Boer, M.C.J. et al. (2025). Wireless mechanical and hybrid thrombus fragmentation of ex vivo endovascular thrombosis model in the iliac artery.

Verification Evidence#

  • Unit tests: tests/nodes/test_permanent_magnet_response.py

Changelog#

Version

Date

Change

1.0.0

2026-03-22

Initial implementation — permanent magnet model