A numerical method for suspensions of articulated bodies in viscous flows
An articulated body is defined as a finite number of rigid bodies connected by a set of arbitrary constraints that limit the relative motion between pairs of bodies. Such a general definition encompasses a wide variety of situations in the microscopic world, from bacteria to synthetic micro-swimmers, but it is also encountered when discretizing inextensible bodies, such as filaments or membranes. In this work we consider hybrid articulated bodies, i.e. constituted of both linear chains, such as filaments, and closed-loop chains, such as membranes. Simulating suspensions of such articulated bodies requires to solve the hydrodynamic interactions between large collections of objects of arbitrary shape while satisfying the multiple constraints that connect them. Two main challenges arise in this task: limiting the cost of the hydrodynamic solves, and enforcing the constraints within machine precision at each time-step. To address these challenges we propose a formalism that combines the body mobility problem in Stokes flow with a velocity formulation of the constraints, resulting in a mixed mobility-resistance problem. While resistance problems are known to scale poorly with the particle number, our preconditioned iterative solver is not sensitive to the system size, therefore allowing to study large suspensions with quasilinear computational cost. Additionally, constraint violations, e.g. due to discrete time-integration errors, are prevented by correcting the particles' positions and orientations at the end of each time-step. Our correction procedure, based on a nonlinear minimisation algorithm, has negligible computational cost and preserves the accuracy of the time-integration scheme. The versatility of our method allows to study a plethora of articulated systems within a unified framework. We showcase its robustness and scalability by exploring the locomotion modes of a model microswimmer inspired by the diatom colony Bacillaria Paxillifer, and by simulating large suspensions of bacteria interacting near a no-slip boundary. Finally, we provide a Python implementation of our framework in a collaborative publicly available code, where the user can prescribe a set of constraints through a single input file to study a wide spectrum of applications involving suspensions of articulated bodies.