Undulatory propulsion on land

In this final tutorial we combine the techniques from the series and apply them to locomotion by an active filament (snake). The problem is solved by Guo & Mahadevan, PNAS 2007. The governing equations for the body centreline are: \[\begin{aligned} x_s =& \ \cos\theta, \\ y_s =& \ \sin\theta, \\ \theta_s =& \ \kappa, \\ T_s =& \ \mu_w + \mu_p\,\text{Pr}|\sin\theta| - \text{Mo}\tfrac{\cos(2\pi s)}{2\pi} - \text{Be}\,\kappa_s\kappa - \text{Vi}\,\kappa_{ss}\kappa, \\ 0 =& \ -\text{Pr}\sin\theta + \text{Mo}\sin(2\pi s) + \kappa T - \text{Be}\,\kappa_{ss} - \text{Vi}\,\kappa_{sss}. \end{aligned}\] Parameters: Pr, Mo, Be, Vi, \(\mu_w\), \(\mu_p\).

Boundary conditions are mixed Dirichlet and periodic: \(x(0)=y(0)=y(1)=\theta(0)=\theta(1)=0\) and \(T(0)=T(1),\; \kappa(0)=\kappa(1),\; \kappa_s(0)=\kappa_s(1)\).

Solution strategy

The problem is too hard to solve in one shot, so we split into two parts:

  • Part 1 — Enforce most but not all periodic BCs; continue from an accessible trivial solution to the neighbourhood of interest along one parameter (Mo).
  • Part 2 — Use homotopy continuation to asymptotically satisfy the remaining BC \(\kappa_s(0)=\kappa_s(1)\) via a new parameter \(\texttt{PAR(8)}\): \(\kappa_s(0)-\kappa_s(1)+\texttt{PAR(8)}=0\). When \(\texttt{PAR(8)}\to 0\) the BC is exactly satisfied.

Steps in Snake.auto:

  • Initialise: \(x(s)=s\), all other fields zero.
  • Start near Guo & Mahadevan parameters: Pr=0.18, Mo=0.0, Be=0.4, Vi=1.0, \(\mu_w=0\), \(\mu_p=0.2\).
  • Enforce Dirichlet + partial periodic BCs (skip \(\kappa_s\) BC); continue along Mo.
  • Pin solution with \(\lambda\): \[\begin{aligned} T_s =& \ \cdots - \lambda T, \\ 0 =& \ \cdots - \lambda\kappa, \end{aligned}\] then continue \(\lambda\to 0\).
  • Adjust \(\mu_w\), then Vi to reach paper parameters.
  • Enforce last BC via PAR(8) continuation, then vary Vi with Mo as free parameter to reproduce the Mo–Vi curve from the paper.

Snake undulatory locomotion result