CSF Flow Node#
Module: mime.nodes.environment.csf_flow
Stability: experimental
Algorithm ID: MIME-NODE-004
Version: 1.0.0
Verification Mode: Mode 2 (Independent)
Summary#
Analytical Stokes drag on a spherical body in quiescent or pulsatile CSF. Computes translational and rotational drag forces without resolving the flow field. This is the analytical fallback for benchmarks B0 and B2; it will be augmented/replaced by IB-LBM for full fluid-structure coupling.
Governing Equations#
Stokes drag (quiescent fluid): $$ \mathbf{F}_{\text{drag}} = -6\pi\mu a (\mathbf{V} - \mathbf{u}^{\infty}) $$
Rotational drag: $$ \mathbf{T}_{\text{drag}} = -8\pi\mu a^3 \boldsymbol{\omega} $$
Pulsatile background flow (simplified centreline sinusoidal): $$ \mathbf{u}^{\infty}(t) = v_{\text{peak}} \sin(\omega_c t) \hat{\mathbf{z}} $$
Discretization#
Analytical — closed-form evaluation each timestep.
Implementation Mapping#
Equation Term |
Implementation |
Notes |
|---|---|---|
$\mathbf{F} = -6\pi\mu a(\mathbf{V} - \mathbf{u})$ |
|
|
$\mathbf{T} = -8\pi\mu a^3 \omega$ |
|
|
$\mathbf{u}^{\infty}(t)$ |
|
|
Assumptions and Simplifications#
Spherical body for drag computation
Stokes regime ($Re \ll 1$)
Newtonian fluid (CSF at physiological protein levels)
Robot small compared to channel ($a \ll R$)
Pulsatile mode: centreline velocity only (no radial profile)
Validated Physical Regimes#
Parameter |
Verified Range |
Notes |
|---|---|---|
Re |
0–0.1 |
Stokes regime |
robot_radius |
10–500 um |
Microrobot size range |
Known Limitations and Failure Modes#
No resolved flow field — point-force drag only
No fluid-structure interaction (one-way coupling)
No Faxen correction (negligible for $a = 100\mu$m at cardiac frequency)
No Basset history force (3.3% correction at cardiac frequency)
State Variables#
Field |
Shape |
Units |
Description |
|---|---|---|---|
drag_force |
(3,) |
N |
Drag force on robot |
drag_torque |
(3,) |
N.m |
Rotational drag |
background_velocity |
(3,) |
m/s |
CSF flow at robot position |
sim_time |
() |
s |
Accumulated time |
Parameters#
Parameter |
Type |
Default |
Units |
Description |
|---|---|---|---|---|
fluid_viscosity_pa_s |
float |
8.5e-4 |
Pa.s |
CSF dynamic viscosity |
fluid_density_kg_m3 |
float |
1002 |
kg/m^3 |
CSF density |
robot_radius_m |
float |
100e-6 |
m |
Effective hydrodynamic radius |
pulsatile |
bool |
False |
- |
Enable pulsatile background flow |
cardiac_freq_hz |
float |
1.1 |
Hz |
Cardiac pulsation frequency |
peak_velocity_m_s |
float |
0.04 |
m/s |
Peak centreline velocity |
Boundary Inputs#
Field |
Shape |
Default |
Coupling Type |
Description |
|---|---|---|---|---|
position |
(3,) |
zeros |
replacive |
Robot position |
velocity |
(3,) |
zeros |
replacive |
Robot velocity |
angular_velocity |
(3,) |
zeros |
replacive |
Robot angular velocity |
Boundary Fluxes (outputs)#
Field |
Shape |
Units |
Description |
|---|---|---|---|
drag_force |
(3,) |
N |
To RigidBodyNode (additive) |
drag_torque |
(3,) |
N.m |
To RigidBodyNode (additive) |
MIME-Specific Sections#
Anatomical Operating Context#
Compartment |
Flow Regime |
Re Range |
Viscosity Range |
|---|---|---|---|
CSF (aqueduct) |
pulsatile |
0–0.1 |
0.7–1.0 mPa.s |
Clinical Relevance#
CSF flow is pulsatile (cardiac + respiratory). Drag on the microrobot determines navigation accuracy and energy budget. Pulsatile flow creates time-varying forces that affect closed-loop control performance.
References#
[@Purcell1977] Purcell, E.M. (1977). Life at Low Reynolds Number. — Foundational low-Re hydrodynamics.
Verification Evidence#
MIME-VER-001: Stokes translational drag (< 5% error)
MIME-VER-002: Stokes rotational drag
MIME-VER-003: Drag linearity
Unit tests:
tests/nodes/test_csf_flow.py(11 tests)
Changelog#
Version |
Date |
Change |
|---|---|---|
1.0.0 |
2026-03-20 |
Initial implementation — analytical Stokes drag |