Cómo calcular la viscosidad Andrade en Python usando UliEngineering

Puedes calcular fácilmente la viscosidad Andrade de líquidos usando la librería Python UliEngineering. La ecuación de Andrade es un modelo tipo Arrhenius que describe la dependencia de la viscosidad con la temperatura:

andrade_viscosity.py
from UliEngineering.Physics.Viscosity import andrade_viscosity, CommonLiquids
from UliEngineering.EngineerIO import *

# Calcular viscosidad Andrade del agua a 20°C
T = 20 + 273.15  # Convertir a Kelvin
eta = andrade_viscosity(T, CommonLiquids.Water.andrade)
print(f"Viscosidad del agua a 20°C: {format_value(eta, 'Pa·s')}")

# Calcular viscosidad Andrade del etanol a 50°C
T = 50 + 273.15
eta = andrade_viscosity(T, CommonLiquids.Ethanol.andrade)
print(f"Viscosidad del etanol a 50°C: {format_value(eta, 'Pa·s')}")

# Usar constantes Andrade personalizadas
from UliEngineering.Physics.Viscosity import AndradeConstants
custom = AndradeConstants(name="Custom liquid", A=1.0e-6, B=2000.0)
eta = andrade_viscosity(300.0, custom)
print(f"Viscosidad del líquido personalizado a 300K: {format_value(eta, 'Pa·s')}")

Ejemplo de salida

andrade_viscosity_output.txt
Viscosidad del agua a 20°C: 1.00 mPa·s
Viscosidad del etanol a 50°C: 1.05 µPa·s
Viscosidad del líquido personalizado a 300K: 2.35 mPa·s

andrade viscosity plot.svg

La ecuación de Andrade viene dada por:

$$ \eta = A \cdot \exp\left(\frac{B}{T}\right) $$

donde $\eta$ es la viscosidad dinámica, $T$ es la temperatura absoluta en Kelvin, y $A$ y $B$ son constantes específicas del material. El parámetro $B$ está relacionado con la energía de activación del flujo viscoso.

La gráfica anterior muestra el modelo de viscosidad Andrade para varios líquidos comunes en un rango de temperatura de 0°C a 100°C. Observa que la viscosidad disminuye exponencialmente con la temperatura, lo cual es característico de la mayoría de los líquidos.

La librería UliEngineering proporciona constantes Andrade predefinidas para líquidos comunes como Agua, Etanol, Metanol, Glicerol, Aceite de Oliva, Mercurio, Acetona y Benceno a través de la clase CommonLiquids.

Entradas relacionadas


Script de generación de la gráfica

plot_andrade_viscosity.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 (
    andrade_viscosity,
    CommonLiquids,
)

# Temperature range in Celsius for plotting
T_C = np.linspace(0, 100, 200)  # 0 to 100°C
T_K = T_C + 273.15  # Convert to Kelvin

# Create plot
plt.figure(figsize=(10, 6))

# Plot for different common liquids
liquids_to_plot = [
    ('Water', CommonLiquids.Water.andrade, 'blue'),
    ('Ethanol', CommonLiquids.Ethanol.andrade, 'green'),
    ('Methanol', CommonLiquids.Methanol.andrade, 'red'),
    ('Glycerol', CommonLiquids.Glycerol.andrade, 'purple'),
    ('Mercury', CommonLiquids.Mercury.andrade, 'orange'),
]

for name, constants, color in liquids_to_plot:
    eta = andrade_viscosity(T_K, constants) * 1000  # Convert to mPa·s
    plt.plot(T_C, eta, label=name, color=color, linewidth=2)

plt.xlabel('Temperature (°C)', fontsize=12)
plt.ylabel('Dynamic Viscosity (mPa·s)', fontsize=12)
plt.title('Andrade Viscosity Model for Common Liquids', fontsize=14, fontweight='bold')
plt.legend(loc='upper right', fontsize=10)
plt.grid(True, alpha=0.3)
plt.yscale('log')  # Log scale because viscosities span orders of magnitude

plt.tight_layout()
plt.savefig('andrade_viscosity_plot.svg', format='svg', dpi=300)
print("Plot saved to andrade_viscosity_plot.svg")

Echa un vistazo a artículos similares por categoría: Physics, Python