Cómo calcular la tensión de plástico Bingham en Python usando UliEngineering
Puedes calcular fácilmente la tensión de cizallamiento para fluidos plásticos Bingham usando la librería Python UliEngineering. El modelo de plástico Bingham describe fluidos que se comportan como sólidos a baja tensión de cizallamiento y fluyen como líquidos por encima de una tensión de fluencia:
from UliEngineering.Physics.Viscosity import bingham_stress, BinghamConstants
from UliEngineering.EngineerIO import *
# Calcular tensión Bingham con constantes por defecto
gamma = 10.0 # Tasa de cizallamiento en s^-1
tau = bingham_stress(gamma)
print(f"Tensión de cizallamiento a {gamma} s^-1: {format_value(tau, 'Pa')}")
# Calcular tensión Bingham para lodo de perforación
drilling_mud = BinghamConstants(name='Drilling mud', tau0=20.0, mu_p=0.3)
gamma = 25.0
tau = bingham_stress(gamma, drilling_mud)
print(f"Tensión de cizallamiento del lodo de perforación a {gamma} s^-1: {format_value(tau, 'Pa')}")
# Calcular tensión Bingham para pasta de dientes
toothpaste = BinghamConstants(name='Toothpaste', tau0=50.0, mu_p=0.5)
gamma = 5.0
tau = bingham_stress(gamma, toothpaste)
print(f"Tensión de cizallamiento de la pasta de dientes a {gamma} s^-1: {format_value(tau, 'Pa')}")Ejemplo de salida
Tensión de cizallamiento a 10.0 s^-1: 11.0 Pa
Tensión de cizallamiento del lodo de perforación a 25.0 s^-1: 27.5 Pa
Tensión de cizallamiento de la pasta de dientes a 5.0 s^-1: 52.5 PaEl modelo de plástico Bingham viene dado por:
$$ \tau = \tau_0 + \mu_p \cdot \dot{\gamma} $$donde $\tau$ es la tensión de cizallamiento, $\tau_0$ es la tensión de fluencia (tensión mínima requerida para iniciar el flujo), $\mu_p$ es la viscosidad plástica, y $\dot{\gamma}$ es la tasa de cizallamiento.
Los plásticos Bingham son fluidos no newtonianos que exhiben una tensión de fluencia por debajo de la cual se comportan como sólidos. Por encima de esta tensión de fluencia, fluyen con una viscosidad plástica constante. Ejemplos comunes incluyen lodos de perforación, pasta de dientes, pinturas y ciertos productos alimenticios como el ketchup.
La gráfica anterior muestra el modelo de plástico Bingham para varios materiales en un rango de tasas de cizallamiento. Observa que todos los materiales tienen una intersección no nula (tensión de fluencia) y luego aumentan linealmente con la tasa de cizallamiento, con la pendiente determinada por la viscosidad plástica.
La librería UliEngineering proporciona la clase de datos BinghamConstants para definir parámetros de tensión de fluencia y viscosidad plástica específicos del material. Si no se proporcionan constantes, se usan valores de ejemplo por defecto (τ₀ = 10 Pa, μₚ = 0,1 Pa·s).
Entradas relacionadas
- Cómo calcular el caudal de Poiseuille en Python usando UliEngineering
- Cómo calcular la resistencia de Stokes en Python usando UliEngineering
- Cómo calcular el número de Reynolds en Python usando UliEngineering
Script de generación de la gráfica
#!/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,
)
# Shear rate range for plotting
gamma = np.linspace(0, 50, 100) # 0 to 50 s^-1
# Create plot
plt.figure(figsize=(10, 6))
# Plot for different Bingham materials
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('Shear Rate (s⁻¹)', fontsize=12)
plt.ylabel('Shear Stress (Pa)', fontsize=12)
plt.title('Bingham Plastic Model for Various Materials', 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("Plot saved to bingham_plot.svg")