🖥️ Chute d’une bille dans un fluide peu visqueux ★

Notebook Capytale de cet exercice : 78a6-11678462

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 2⋅103 et 2⋅105. Dans ce cas, le coefficient de trainée d’une sphère est 𝐶𝑥=0,47.

1/ Exprimer la force de frottement fluide sur la bille.

Coup de pouce 1
Que vaut le maitre-couple pour une sphère de rayon 𝑅 ?
Corrigé
𝐹⃗𝑥=12𝜇𝜋𝑅2𝐶𝑥𝑣2𝑒⃗𝑧

2/ Établir l’équation différentielle vérifiée par 𝑣(𝑡).

Coup de pouce 1
Faire le bilan des forces agissant sur la bille.
Corrigé

Le théorème de la résultante cinétique appliqué à la bille s’écrit 𝑚d𝑣⃗d𝑡=𝑚𝑔⃗+𝐹⃗𝑥. Comme 𝑣⃗=−𝑣𝑒⃗𝑧, la projection sur 𝑒⃗𝑧 donne −𝑚d𝑣d𝑡=−𝑚𝑔+12𝜇𝜋𝑅2𝐶𝑥𝑣2, soit

𝑚d𝑣d𝑡=𝑚𝑔−12𝜇𝜋𝑅2𝐶𝑥𝑣2

3/ Établir l’expression de la vitesse limite 𝑣lim atteinte par la bille.

Coup de pouce 1
Comment se simplifie l’équation différentielle en régime stationnaire ?
Corrigé

L’équation différentielle possède une solution particulière constante :

12𝜇𝜋𝑅2𝐶𝑥𝑣2=𝑚𝑔𝑣=2𝑚𝑔𝜇𝜋𝑅2𝐶𝑥

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]
Coup de pouce 1
Isoler la dérivée de la vitesse dans l’équation différentielle.
Corrigé
def dvdt(t, v):
    return (m * g - 1/2 * mu * pi * R**2 * Cx * v**2) / m

5/ Tracer la vitesse de la bille en fonction du temps.

Corrigé
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.

Coup de pouce 1
Que vaut le nombre de Reynolds aux premiers instants du mouvement ?
Corrigé
Au début de la chute, la vitesse est très faible, ce qui conduit à un nombre de Reynolds faible. Dans ce régime, le coefficient de trainée n’est pas constant.

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

https://nuage03.apps.education.fr/index.php/s/APPGg6586cnHELy

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 ...
Coup de pouce 1
On peut utiliser le découpage (slicing) : L[:,:] par exemple pour prendre toutes les lignes et toutes les colonnes d’un tableau L.
Coup de pouce 2
Rappeler l’expression du nombre de Reynolds en fonction de la vitesse.
Coup de pouce 3
Rappeler l’expression de la force de trainée en fonction du coefficient de trainée.
Corrigé
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**2

8/ 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.

Coup de pouce 1
Seule la fonction dvdt doit être modifiée pour prendre en compte la nouvelle expression de la force de trainée.
Corrigé
def dvdt(t, v):
    return (m * g - Fx(v)) / m
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()