--- bibliography: ../../bibliography.bib --- # 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})$ | `mime.nodes.environment.csf_flow.CSFFlowNode.update` | `jnp` arithmetic | | $\mathbf{T} = -8\pi\mu a^3 \omega$ | `mime.nodes.environment.csf_flow.CSFFlowNode.update` | `jnp` arithmetic | | $\mathbf{u}^{\infty}(t)$ | `mime.nodes.environment.csf_flow.CSFFlowNode.update` | `jnp.sin(omega_c * t)` | ## Assumptions and Simplifications 1. Spherical body for drag computation 2. Stokes regime ($Re \ll 1$) 3. Newtonian fluid (CSF at physiological protein levels) 4. Robot small compared to channel ($a \ll R$) 5. 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 1. No resolved flow field — point-force drag only 2. No fluid-structure interaction (one-way coupling) 3. No Faxen correction (negligible for $a = 100\mu$m at cardiac frequency) 4. 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 |