Comment calculer la contrainte d'un fluide de Bingham en Python avec UliEngineering

Vous pouvez facilement calculer la contrainte de cisaillement pour les fluides plastiques de Bingham à l’aide de la bibliothèque Python UliEngineering. Le modèle plastique de Bingham décrit les fluides qui se comportent comme des solides à faible contrainte de cisaillement et s’écoulent comme des liquides au-dessus d’une contrainte seuil :

bingham_stress.py
from UliEngineering.Physics.Viscosity import bingham_stress, BinghamConstants
from UliEngineering.EngineerIO import *

# Calculer la contrainte de Bingham avec les constantes par défaut
gamma = 10.0  # Taux de cisaillement en s^-1
tau = bingham_stress(gamma)
print(f"Contrainte de cisaillement à {gamma} s^-1 : {format_value(tau, 'Pa')}")

# Calculer la contrainte de Bingham pour une boue de forage
drilling_mud = BinghamConstants(name='Drilling mud', tau0=20.0, mu_p=0.3)
gamma = 25.0
tau = bingham_stress(gamma, drilling_mud)
print(f"Contrainte de cisaillement de la boue de forage à {gamma} s^-1 : {format_value(tau, 'Pa')}")

# Calculer la contrainte de Bingham pour du dentifrice
toothpaste = BinghamConstants(name='Toothpaste', tau0=50.0, mu_p=0.5)
gamma = 5.0
tau = bingham_stress(gamma, toothpaste)
print(f"Contrainte de cisaillement du dentifrice à {gamma} s^-1 : {format_value(tau, 'Pa')}")

Exemple de sortie

bingham_stress_output.txt
Contrainte de cisaillement à 10.0 s^-1 : 11.0 Pa
Contrainte de cisaillement de la boue de forage à 25.0 s^-1 : 27.5 Pa
Contrainte de cisaillement du dentifrice à 5.0 s^-1 : 52.5 Pa

bingham plot.svg

Le modèle plastique de Bingham est donné par :

$$ \tau = \tau_0 + \mu_p \cdot \dot{\gamma} $$

où $\tau$ est la contrainte de cisaillement, $\tau_0$ est la contrainte seuil (contrainte minimale requise pour initier l’écoulement), $\mu_p$ est la viscosité plastique, et $\dot{\gamma}$ est le taux de cisaillement.

Les plastiques de Bingham sont des fluides non newtoniens qui présentent une contrainte seuil en dessous de laquelle ils se comportent comme des solides. Au-dessus de cette contrainte seuil, ils s’écoulent avec une viscosité plastique constante. Les exemples courants incluent les boues de forage, le dentifrice, les peintures et certains produits alimentaires comme le ketchup.

Le graphique ci-dessus montre le modèle plastique de Bingham pour divers matériaux sur une plage de taux de cisaillement. Remarquez que tous les matériaux ont une ordonnée à l’origine non nulle (contrainte seuil) puis augmentent linéairement avec le taux de cisaillement, la pente étant déterminée par la viscosité plastique.

La bibliothèque UliEngineering fournit la dataclass BinghamConstants pour définir les paramètres de contrainte seuile et de viscosité plastique spécifiques à un matériau. Si aucune constante n’est fournie, les valeurs d’exemple par défaut (τ₀ = 10 Pa, μₚ = 0,1 Pa·s) sont utilisées.

Articles liés


Script de génération du graphique

plot_bingham.py
#!/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 (
    bingham_stress,
    BinghamConstants,
)

# Plage de taux de cisaillement pour le tracé
gamma = np.linspace(0, 50, 100)  # 0 à 50 s^-1

# Créer le graphique
plt.figure(figsize=(10, 6))

# Tracer pour différents matériaux de Bingham
materials = [
    ('Drilling mud', BinghamConstants(name='Drilling mud', tau0=20.0, mu_p=0.3), 'blue'),
    ('Toothpaste', BinghamConstants(name='Toothpaste', tau0=50.0, mu_p=0.5), 'green'),
    ('Paint', BinghamConstants(name='Paint', tau0=10.0, mu_p=0.1), 'red'),
    ('Clay slurry', BinghamConstants(name='Clay slurry', tau0=15.0, mu_p=0.2), 'purple'),
]

for name, constants, color in materials:
    tau = bingham_stress(gamma, constants)
    plt.plot(gamma, tau, label=name, color=color, linewidth=2)

plt.xlabel('Taux de cisaillement (s⁻¹)', fontsize=12)
plt.ylabel('Contrainte de cisaillement (Pa)', fontsize=12)
plt.title('Modèle plastique de Bingham pour divers matériaux', fontsize=14, fontweight='bold')
plt.legend(loc='upper left', fontsize=10)
plt.grid(True, alpha=0.3)

plt.tight_layout()
plt.savefig('bingham_plot.svg', format='svg', dpi=300)
print("Graphique enregistré dans bingham_plot.svg")

Check out similar posts by category: Physics, Python