Stokeslet Fluid Node#
Module: mime.nodes.environment.stokeslet.fluid_node
Class: StokesletFluidNode
Stability: experimental
Algorithm ID: MIME-NODE-012
Version: 1.0.0
Verification Mode: Mode 2 (Independent)
Summary#
Quasi-static regularised Stokeslet boundary-element method (BEM) fluid solver for confined microrobot fluid-structure interaction. Computes drag force and torque on a rigid body either via a precomputed 6×6 resistance matrix (standalone mode) or via LU-backsubstitution against a background flow field (Schwarz coupling mode). Has no Mach-number restriction, so it remains valid at the high rotation rates where LBM-only solvers fail.
The node is one half of MIME’s hybrid low-Reynolds solver: it resolves the body drag exactly (no Mach constraint, no diffuse-band bias), while IBLBM and FVM-IBM resolve the volumetric background flow with the body removed.
Governing Equations#
Quasi-static incompressible Stokes flow,
solved in boundary-integral form using the regularised Stokeslet Green’s function [@Cortez2005]:
where the regularised kernel \(S^{\varepsilon}_{ij}(\mathbf{r})\) blends the singular Stokeslet with a smoothing parameter \(\varepsilon\) scaled to the surface-element spacing.
Cylinder confinement uses the analytical Liron–Shahar image correction \(G_{\text{wall}}\) [@LironShahar1978]:
Discretization#
Surface mesh of \(N_{\text{body}}\) collocation points with quadrature weights \(w_k\) (regularised Stokeslet quadrature).
System matrix \(A\) is dense \(3N_{\text{body}} \times 3N_{\text{body}}\). Standalone mode reduces it to a \(6\times 6\) resistance matrix by solving six rigid-body forcing problems at init.
Schwarz mode keeps the full \(A\) factorisation; per-step cost is one LU solve.
When
wall_tableis provided, the analytical \(G_{\text{wall}}\) is baked into \(A\) at init — there is no double-counting with a coupled LBM wall (LBM resolves the volumetric background; \(G_{\text{wall}}\) is an image correction on the body perturbation).
Implementation Mapping#
Equation Term |
Implementation |
Notes |
|---|---|---|
Regularised Stokeslet kernel |
|
JAX-vectorised |
BEM system matrix \(A\) |
|
|
Liron–Shahar image \(G_{\text{wall}}\) |
|
Precomputed table |
6×6 resistance matrix |
|
Standalone mode |
Schwarz RHS / solve |
|
LU backsubstitution |
Force/torque integration |
|
\(\int \mathbf{f}\,dS\), \(\int \mathbf{r}\times\mathbf{f}\,dS\) |
Assumptions and Simplifications#
Quasi-static Stokes flow on the body (\(\partial_t \mathbf{u}\) ignored on the BEM scale).
Newtonian, incompressible fluid; single \(\mu\).
Rigid body — no surface deformation.
Confined mode assumes a long, straight, circular cylinder of radius \(R_{\text{cyl}}\) and warns if the body centroid is more than \(0.05\,R_{\text{cyl}}\) off-axis.
No double-counting check between the wall table and a coupled LBM background — those are documented to compute different things.
The BEM solve has no spatial stencil, so
halo_width()returns the empty{}default — the node is pointwise and shardable, unlike IBLBM and FVM-IBM. See Node API migration.
Validated Physical Regimes#
Parameter |
Verified Range |
Notes |
|---|---|---|
Body Reynolds |
\(\le 0.1\) |
Stokes regime; rotation Re can be higher |
\(\kappa = a/R_{\text{cyl}}\) |
\(\le 0.3\) |
Sphere benchmark to <4% error |
Mesh density |
mean-spacing-derived \(\varepsilon\) |
Robust on geodesic meshes |
Known Limitations and Failure Modes#
Standalone mode cannot represent pulsatile background flow or multi-robot wake coupling — those need Schwarz mode with LBM/FVM.
Off-axis bodies invalidate the cylindrical wall table; the node raises if the body extends outside the cylinder and warns at moderate offsets.
Dense \(3N \times 3N\) memory cost limits standalone \(N\) to a few thousand surface points on a single GPU.
The Force-Coupling-Method
body_force_densityflux is a stub that returns zeros until the Level-3 LBM coupling is wired.
Stability Conditions#
The BEM system is solved by direct LU factorisation, so there is no explicit-timestep stability condition. Conditioning degrades for \(\varepsilon\) much smaller than the surface spacing; the node defaults \(\varepsilon = \) mean-spacing \(/2\).
State Variables#
Field |
Shape |
Units |
Description |
|---|---|---|---|
drag_force |
(3,) |
N |
Hydrodynamic force on the body |
drag_torque |
(3,) |
N·m |
Hydrodynamic torque on the body |
body_traction |
(N, 3) |
Pa |
Surface traction (Schwarz mode only) |
Parameters#
Parameter |
Type |
Default |
Units |
Description |
|---|---|---|---|---|
mu |
float |
— |
Pa·s |
Dynamic viscosity |
body_mesh |
SurfaceMesh |
— |
— |
Body surface mesh + weights |
wall_mesh |
SurfaceMesh | None |
None |
— |
Optional explicit wall mesh (standalone) |
interface_mesh |
SurfaceMesh | None |
None |
— |
Presence enables Schwarz mode |
wall_table |
WallTable | None |
None |
— |
Liron–Shahar image table |
R_cyl |
float | None |
None |
m |
Cylinder radius (required with |
epsilon |
float | None |
spacing/2 |
m |
Regularisation length |
Boundary Inputs#
Field |
Shape |
Default |
Coupling Type |
Description |
|---|---|---|---|---|
body_velocity |
(3,) |
zeros |
replacive |
Body linear velocity [m/s] |
body_angular_velocity |
(3,) |
zeros |
replacive |
Body angular velocity [rad/s] |
body_orientation |
(4,) |
(1,0,0,0) |
replacive |
Body orientation quaternion |
background_flow |
(N, 3) |
zeros |
replacive |
LBM velocity at body surface (Schwarz mode) |
Boundary Fluxes (outputs)#
Field |
Shape |
Units |
Description |
|---|---|---|---|
drag_force |
(3,) |
N |
Drag force on the body |
drag_torque |
(3,) |
N·m |
Drag torque on the body |
body_traction |
(N, 3) |
Pa |
Surface traction (Schwarz mode only) |
body_force_density |
(N, 3) |
N/m³ |
Stub for Level-3 FCM coupling |
MIME-Specific Sections#
Anatomical Operating Context#
Compartment |
Flow Regime |
Re Range |
Viscosity Range |
|---|---|---|---|
Blood vessel (confined UMR) |
quasi-Stokes |
0 – 0.1 |
1 – 4 mPa·s |
Silicone vessel benchmarks |
quasi-Stokes |
0 – 0.1 |
1 mPa·s (water) |
Clinical Relevance#
For confined helical UMRs, viscous drag dominates inertia and the near-wall lubrication forces set the achievable swim speed. BEM gives unbiased drag at the resolution needed for closed-loop control — surface-method accuracy here is what lets the IDE’s PID trim work without retuning per geometry.
References#
[@Cortez2005] Cortez et al. (2005). The method of regularized Stokeslets in three dimensions. Phys. Fluids 17(3).
[@LironShahar1978] Liron & Shahar (1978). Stokes flow due to a Stokeslet in a pipe. J. Fluid Mech.
[@Purcell1977] Purcell (1977). Life at Low Reynolds Number.
Verification Evidence#
MIME-VER-stokeslet-001: sphere in unconfined flow vs. Stokes drag (<4%)
MIME-VER-stokeslet-002: confined sphere vs. Liron–Shahar reference solution
MIME-VER-stokeslet-003: rotational drag of helical UMR vs. de Jongh (2025)
Unit tests:
tests/nodes/environment/stokeslet/
Changelog#
Version |
Date |
Change |
|---|---|---|
1.0.0 |
2026-04-10 |
Initial implementation — standalone + Schwarz modes |