Comment calculer la traînée de Stokes en Python avec UliEngineering
Vous pouvez facilement calculer la force de traînée sur une sphère se déplaçant dans un fluide visqueux en utilisant la loi de Stokes avec la bibliothèque Python UliEngineering :
from UliEngineering.Physics.Viscosity import stokes_drag
from UliEngineering.EngineerIO import *
# Calculer la force de traînée sur une sphère de 10 µm dans l'eau
radius = 10e-6 # 10 µm
velocity = 0.01 # 1 cm/s
viscosity = 0.001 # Pa·s (eau)
F = stokes_drag(radius, velocity, viscosity)
print(f"Force de traînée : {format_value(F, 'N')}")
# Calculer la force de traînée sur une sphère de 1 µm dans l'eau
radius = 1e-6
F = stokes_drag(radius, velocity, viscosity)
print(f"Force de traînée (sphère de 1 µm) : {format_value(F, 'N')}")
# Calculer la force de traînée dans un fluide plus visqueux (glycérol)
viscosity = 1.412 # Pa·s (glycérol à 20°C)
F = stokes_drag(10e-6, velocity, viscosity)
print(f"Force de traînée dans le glycérol : {format_value(F, 'N')}")Exemple de sortie
Force de traînée : 1.88 pN
Force de traînée (sphère de 1 µm) : 188 fN
Force de traînée dans le glycérol : 2.66 nNLa loi de Stokes est donnée par :
$$ F = 6 \pi \eta r v $$où $F$ est la force de traînée, $\eta$ est la viscosité dynamique, $r$ est le rayon de la sphère, et $v$ est la vitesse.
La loi de Stokes décrit la force de traînée sur une sphère se déplaçant dans un fluide visqueux à de faibles nombres de Reynolds (généralement Re < 1). Ce régime est appelé écoulement rampant ou écoulement de Stokes, où les effets inertiels sont négligeables par rapport aux effets visqueux. La relation linéaire avec la vitesse et le rayon rend cette loi particulièrement utile pour analyser les petites particules dans les fluides.
Le graphique ci-dessus montre comment la force de traînée varie en fonction du rayon de la sphère pour une vitesse fixe de 1 cm/s dans un fluide de type eau (η = 1 mPa·s). Remarquez l’augmentation linéaire de la force de traînée avec le rayon, comme le prédit la loi de Stokes.
Cette loi est fondamentale dans de nombreuses applications, notamment l’analyse de sédimentation, le dimensionnement de particules, la microfluidique, et la compréhension du mouvement des cellules biologiques et des nanoparticules dans des environnements fluides.
Articles liés
- Comment calculer le nombre de Reynolds en Python avec UliEngineering
- Comment calculer la viscosité cinématique en Python avec UliEngineering
- Comment calculer la contrainte de Bingham en Python avec UliEngineering
Script de génération du graphique
#!/usr/bin/env python3
import matplotlib.pyplot as plt
import numpy as np
import sys
sys.path.insert(0, '/home/uli/dev/UliEngineering')
from UliEngineering.Physics.Viscosity import stokes_drag
# Plage de rayons de sphère pour le tracé
r = np.linspace(1e-6, 1e-4, 100) # 1 µm à 100 µm
# Créer le graphique
plt.figure(figsize=(10, 6))
# Paramètres fixes
velocity = 0.01 # m/s
viscosity = 0.001 # Pa·s (de type eau)
# Calculer la force de traînée
F = stokes_drag(r, velocity, viscosity) * 1e12 # Convertir en pN
plt.plot(r * 1e6, F, color='blue', linewidth=2)
plt.xlabel('Sphere Radius (µm)', fontsize=12)
plt.ylabel('Drag Force (pN)', fontsize=12)
plt.title('Stokes Drag vs Sphere Radius (v = 1 cm/s, η = 1 mPa·s)', fontsize=14, fontweight='bold')
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('stokes_drag_plot.svg', format='svg', dpi=300)
print("Plot saved to stokes_drag_plot.svg")