According to my textbook, the flow around a cylinder can be solved under certain conditions (stationary, incompressible, irrotational, invariant along perpendicular axis flow). The solution, written in cylindrical coordinates $(r, \theta)$ is:
$$ \vec{V}(M) = v_r(r, \theta) \, \vec{u}_r + v_\theta(r, \theta) \, \vec{u}_\theta $$with $v_r = -U(1 - \frac{R^2}{r^2}) \cos\theta$ and $v_\theta = U(1 + \frac{R^2}{r^2}) \sin\theta$. In the last two expressions, $U$ is the velocity far from the cylinder and $R$ is the diameter of the cylinder.
In the following, I propose to visualize this solution.
%pylab inline
Populating the interactive namespace from numpy and matplotlib
U = 1 # m/s
R = 0.1 # m
x = arange(-0.25, 0.25, 0.005)
y = arange(-0.25, 0.25, 0.005)
X, Y = meshgrid(x, y)
r = sqrt(X**2 + Y**2)
theta = arctan2(Y, X)
v_r = -U * (1 - R**2 / r**2) * cos(theta) * (r > R)
v_theta = U * (1 + R**2 / r**2) * sin(theta) * (r > R)
v_x = cos(theta) * v_r - sin(theta) * v_theta
v_y = sin(theta) * v_r + cos(theta) * v_theta
speed = sqrt(v_x ** 2 + v_y ** 2)
streamplot(x, y, v_x, v_y)
<matplotlib.streamplot.StreamplotSet at 0x6753e50>
lw = 5 * speed / speed.max()
streamplot(x, y, v_x, v_y, density=0.7, color='k', linewidth=lw)
<matplotlib.streamplot.StreamplotSet at 0x8da7e70>
pcolormesh(x, y, speed)
axis([x.min(), x.max(), y.min(), y.max()])
colorbar()
title('flow velocity')
<matplotlib.text.Text at 0x9b0c130>
pcolormesh(x, y, v_x)
axis([x.min(), x.max(), y.min(), y.max()])
colorbar()
title(r'$v_x$')
<matplotlib.text.Text at 0x90459d0>
pcolormesh(x, y, v_y)
axis([x.min(), x.max(), y.min(), y.max()])
colorbar()
title(r'$v_y$')
<matplotlib.text.Text at 0x9a1f110>
Further thoughts: one could even animate the particles in the flow using an integrator. In fact, someone already did it!.