This version derives the recoil force from an actual momentum flux instead of an arbitrary force pulse. Each systole ejects a slug of blood of mass Δm through the aorta at exit velocity v(t); treating the ejection like a rocket expelling propellant gives the thrust the body recoils against:
dm/dt(t) = mDot_peak · sin(π·u), u = phase / ejection_fraction
v(t) = v_peak · sin(π·u) (same aortic flow shape)
F_thrust(t) = v(t) · dm/dt(t) (rocket-equation form: F = v_rel · dm/dt)
F_body(t) = − F_thrust(t) (Newton's third law)
mDot_peak is solved so that ∫dm/dt·dt over one ejection window exactly equals stroke volume × blood density (1060 kg/m³) — the slider is in real mL/beat, not an abstract force number. That reaction force then drives the same second-order coupling as any BCG sensor plate:
M·x″ + C·x′ + K·x = F_body(t)
a(t) = x″(t) ← accelerometer reading
- Stroke volume & velocity, not "force" — both sliders map to physiological units (mL ejected, m/s aortic exit speed), and the reaction force is computed from them via momentum flux, not chosen directly.
- Amplitude ∝ 1/M for the raw ballistic term — the instantaneous force/mass ratio at peak systole scales exactly as 1/M; the full spring-coupled trace also shrinks with heavier bodies, though resonance (natural frequency also depends on M) bends that law away from a clean inverse curve — drag the mass slider and watch both effects.
- Underdamped ringing — after each beat the body rings down at ω_d = √(K/M − (C/2M)²) with envelope decay C/(2M), the same mass-spring-damper behaviour real wearable and bed-based BCG sensors see.
The red dot riding up the aortic curve is the ejected mass packet itself, sized and brightened by the instantaneous |dm/dt|·v(t) it represents; the blue arrow at the heart is the reaction force, flipped by −1 and scaled to the frame. The beat detector below finds local peaks in a(t) at least 280 ms apart — crank up motion noise and watch it start missing or inventing beats, the same failure mode as real fidgeting/breathing artifact in bed- and wearable-based BCG.