Here we present the simulation results of flows around a number of rigid and variable shape bodies. The different cases of Potential, Stokesian, and Navier-Stokes flow are considered.
The linear Potential and Stokes flows are solved using a simple panel method, whereas the Navier-Stokes flow is solved using the Immersed Boundary Method.
We start with the simple example of a pulsating circle. It’s boundary is described by:

with the periodic shape function

In python code this is expressed as
shapevariables = (
lambda t: sin(t),
)
X = lambda s,q: cos(s) (1+q[0])
Y = lambda s,q: sin(s) (1+q[0])
bodies = (
(X,Y),
)
The solution can easily be found from the continuity equaiton alone

and the numerical simulation is run just for validation purposes. Whereas the panel methods work fine in this case, the immersed boundary method does not converge as it has not been designed to handle cases where the panel size on the boundary changes.
Below is the result of both the stokes and potential solver (the result is the same for both)
We now consider the periodic translation of a rigid circle. Its boundary is described by:

with a periodic shape function

The code listing
shapevariables = (
lambda t: 0.5*sin(t),
)
X = lambda s,q: cos(s) + q[0]
Y = lambda s,q: sin(s)
bodies = (
(X,Y),
)
Due to Stoke’s Paradox there does not exist a 2D creeping flow around a translating cylinder that vanishes at infinity. The Stokesian solver handles this problem gracefully and outputs a uniform flow for
. The immersed boundary method is used to solve for the
,
and
flows. And the potential solver (assumes irrotational flow) is used to solve for
. The results are presented in the table below:
| Re=0 | Re=1000 |
![]() |
![]() |
| Re=20 | Potential, irrotatoinal |
![]() |
![]() |
| Re=100 | |
![]() |
There is an inverse correlation between boundary thickness and Reynolds number as expected

Note
You can view the simulations at higher resolution by Right Click->View Image (on Firefox) or using an equivalent method on another browser.
Here we take the example given by [Mason99]. The boundary is simulated by:

By using an appropriate time evolution of the two shape modes we can achieve forward motion.
In the simulations below, the parameter is set to
and the following evolution in time of the shape modes is used

In order for the immersed boundary method to converge we must also ensure that the area enclosed by the boundary remains constant. This can be achieved by adding a normalization:

where

Code
shapevariables = (
lambda t: 1-cos(t),
lambda t: sin(t),
)
epsilon = 0.1
R = lambda s,q: 1 + epsilon*(q[0]*cos(2*s) + q[1]*cos(3*s))
N = lambda s,q: sqrt(1+0.5*epsilon**2*(q[0]**2+q[1]**2))
X = lambda s,q: R(s,q)*cos(s)/N(s,q)
Y = lambda s,q: R(s,q)*sin(s)/N(s,q)
bodies = (
(X,Y),
)
| Re=0 | Re=1000 |
![]() |
![]() |
| Re=10 | Potential, irrotatoinal |
![]() |
![]() |
| Re=100 | |
![]() |
Here we take a different exmample of an amoeba studied by Shapere and Wilczek in [Shapere89]
This time the boundary is given by:

Below we use the shape modes evolving in time as follows

and the parameters are set to 
We will not compute the immersed boundary case here, as ensuring the area remains constant in this case is not trivial.
| Re=0 | Potential, irrotation |
![]() |
![]() |
| [Mason99] | R Mason and J Burdick, Propulsion and control of deformable bodies in an ideal fluid, in 1999 IEEE International Conference on Robotics and Automation, 1999. Proceedings, vol. 1, 1999. |
| [Shapere89] | Alfred Shapere and Frank Wilczek, Geometry of Self-Propulsion at Low Reynolds Number, Journal of Fluid Mechanics Digital Archive 198, no. -1 (1989): 557-585. |