import numpy as np
import matplotlib.pyplot as plt
from pylab import *

#Ecoulement d'un fluide autour d'un cylindre

u=1    # vitesse loin du cylindre
R=4    # rayon du cylindre

# définition des abscisses et ordonnées
x=np.linspace(-10,10,500)   
y=np.linspace(-10,10,500)
X,Y=np.meshgrid(x,y)

# lien entre coordonées polaires et cartésiennes
r=sqrt(X**2+Y**2)           
costheta=X/r
sintheta=Y/r

Vr=u*costheta*(1-R**2/r**2)   # composante radiale du champ de vitesse
Vt=-u*sintheta*(1+R**2/r**2)  # composante orthoradiale du champ de vitesse 

# champ de vitesse dans la base cartésienne
Vx = Vr*costheta-Vt*sintheta  
Vy = Vr*sintheta+Vt*costheta

# tracé des lignes de courant
plt.streamplot(X,Y,Vx,Vy,density=1.5)

# tracé du cylindre
w=np.linspace(0,1,100)
for i in w:
    t=np.linspace(0,2*np.pi,100)
    plt.plot(R*i*np.cos(t),R*i*np.sin(t),"b-")


plt.axis('equal')
plt.axis([-10,10,-10,10])

plt.show()
