On lâche sans vitesse initiale une bille sphérique de rayon , de masse , dans un fluide peu visqueux, de masse volumique très faible devant celle de la bille, et de viscosité cinématique .
On suppose la pesanteur uniforme, et on note la vitesse de la bille, désignant sa norme.
On suppose que le nombre de Reynolds est compris entre et . Dans ce cas, le coefficient de trainée d’une sphère est .
1/ Exprimer la force de frottement fluide sur la bille.
2/ Établir l’équation différentielle vérifiée par .
Le théorème de la résultante cinétique appliqué à la bille s’écrit . Comme , la projection sur donne , soit
3/ Établir l’expression de la vitesse limite atteinte par la bille.
L’équation différentielle possède une solution particulière constante :
4/ On cherche à résoudre numériquement l’équation différentielle pour obtenir .
Compléter le code Python suivant pour simuler la chute de la bille.
from math import pi
from scipy.integrate import solve_ivp
R = 0.01 # rayon de la bille en m
m = 0.1 # masse de la bille en kg
mu = 1 # masse volumique du fluide en kg/m^3
Cx = 0.47 # coefficient de trainée
g = 9.81 # accélération due à la pesanteur en m/s^2
def dvdt(t, v): # renvoie la dérivée de la vitesse
...
v0 = 0 # vitesse initiale en m/s
sol = solve_ivp(dvdt, (0,10), [v0])
t = sol.t
v = sol.y[0]def dvdt(t, v):
return (m * g - 1/2 * mu * pi * R**2 * Cx * v**2) / m5/ Tracer la vitesse de la bille en fonction du temps.
import numpy as np
import matplotlib.pyplot as plt
plt.plot(t, v)
plt.xlabel('Temps (s)')
plt.ylabel('Vitesse (m/s)')
plt.title("Chute d'une bille dans un fluide peu visqueux")
plt.show()6/ Expliquer pourquoi la modélisation proposée pose problème aux premiers instants du mouvement.
7/ Des relevés expérimentaux du coefficient de trainée en fonction du nombre de Reynolds sont donnés dans un fichier téléchargeable à l’adresse suivante
Compléter le code Python suivant pour calculer la force de trainée à partir de ces données expérimentales.
import numpy as np
data = np.loadtxt('Cx-Re.csv', delimiter=',', skiprows=1)
Re_exp = ... # première colonne de data
Cx_exp = ... # deuxième colonne de data
eta = 1.85e-5 # viscosité dynamique de l'air en Pa.s
def Fx(v):
Re = ...
Cx = np.interp(Re, Re_exp, Cx_exp) # interpolation du coefficient de trainée à partir des données expérimentales
return ...L[:,:] par exemple pour prendre toutes les lignes et toutes les colonnes d’un tableau L.Re_exp = data[:, 0]
Cx_exp = data[:, 1]
def Fx(v):
Re = (2 * R * mu * v) / eta
Cx = np.interp(Re, Re_exp, Cx_exp)
return 1/2 * mu * pi * R**2 * Cx * v**28/ Modifier le code de la question 4 pour prendre en compte cette nouvelle expression de la force de trainée, et tracer la vitesse de la bille en fonction du temps.
dvdt doit être modifiée pour prendre en compte la nouvelle expression de la force de trainée.def dvdt(t, v):
return (m * g - Fx(v)) / mimport numpy as np
import matplotlib.pyplot as plt
plt.plot(t, v)
plt.xlabel('Temps (s)')
plt.ylabel('Vitesse (m/s)')
plt.title("Chute d'une bille dans un fluide peu visqueux")
plt.show()