Surface Contact Node#

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

Summary#

Near-wall drag corrections and soft penalty contact forces for a sphere near a plane wall. Implements Brenner (1961) perpendicular and Goldman-Cox-Brenner (1967) parallel wall corrections using the leading-order expansion form.

Governing Equations#

Brenner perpendicular correction (leading order): $$ F_{\perp,\text{corrected}} = 6\pi\mu a V_\perp \left(1 + \frac{9a}{8h}\right) $$

Goldman-Cox-Brenner parallel correction (leading order): $$ F_{\parallel,\text{corrected}} = 6\pi\mu a V_\parallel \left(1 + \frac{9a}{16h}\right) $$

Penalty contact force: $$ \mathbf{F}{\text{contact}} = k \cdot \max(-\text{gap}, 0) \cdot \hat{\mathbf{n}}{\text{wall}} $$

Discretization#

Analytical — closed-form evaluation. No spatial discretisation.

Implementation Mapping#

Equation Term

Implementation

Notes

Brenner $1 + 9a/(8h)$

mime.nodes.robot.surface_contact.brenner_correction_perpendicular

Clamped $h \geq 1.5a$

Goldman $1 + 9a/(16h)$

mime.nodes.robot.surface_contact.brenner_correction_parallel

Clamped $h \geq 1.5a$

Penalty force

mime.nodes.robot.surface_contact.penalty_contact_force

Linear spring, jnp.maximum(-gap, 0)

Assumptions and Simplifications#

  1. Sphere near an infinite plane wall

  2. Stokes regime ($Re \ll 1$)

  3. $h/a > 1.5$ (correction series valid; clamped below this)

  4. Flat wall — no curvature corrections

Known Limitations and Failure Modes#

  1. First-order truncation of infinite Brenner series

  2. Penalty contact force is numerical regularisation, not physical

  3. No adhesion (van der Waals, electrostatic)

  4. Single wall only

State Variables#

Field

Shape

Units

Description

wall_correction_perp

()

-

Perpendicular drag multiplier

wall_correction_par

()

-

Parallel drag multiplier

contact_force

(3,)

N

Penalty contact force

gap_distance

()

-

h/a ratio

Parameters#

Parameter

Type

Default

Units

Description

robot_radius_m

float

100e-6

m

Sphere radius

wall_position

float

0.0

m

Wall location

wall_normal_axis

int

2

-

Wall normal axis (0=x, 1=y, 2=z)

contact_stiffness

float

1e-6

N/m

Penalty spring stiffness

MIME-Specific Sections#

Differentiability#

DIFFERENTIABILITY-LIMITED: The penalty contact force has a kink at gap=0. jax.grad through contact events produces unreliable gradients. Use in forward simulation only, or apply a smoothed softplus approximation for differentiability.

Clinical Relevance#

Microrobots in CSF channels must navigate without wall adhesion. Contact with vessel walls is inevitable in narrow channels (aqueduct diameter ~1.5mm). Wall drag corrections are needed for physically meaningful confined navigation simulation.

References#

  • [@Purcell1977] Purcell, E.M. (1977). Life at Low Reynolds Number. — Low-Re hydrodynamics fundamentals.

Verification Evidence#

  • Unit tests: tests/nodes/test_surface_contact.py (13 tests)

Changelog#

Version

Date

Change

1.0.0

2026-03-20

Initial implementation — leading-order Brenner/Goldman corrections + penalty contact