Comment calculer la viscosité VFT en Python avec UliEngineering
Vous pouvez facilement calculer la viscosité VFT (Vogel-Fulcher-Tammann) des liquides en utilisant la bibliothèque Python UliEngineering. L’équation VFT est un modèle à trois paramètres qui offre une excellente précision pour décrire la dépendance de la viscosité à la température, en particulier pour les liquides formant des verres :
from UliEngineering.Physics.Viscosity import vft_viscosity, CommonLiquids
from UliEngineering.EngineerIO import *
# Calculer la viscosité VFT de l'eau à 20°C
T = 20 + 273.15 # Convertir en Kelvin
eta = vft_viscosity(T, CommonLiquids.Water.vft)
print(f"Viscosité de l'eau à 20°C : {format_value(eta, 'Pa·s')}")
# Calculer la viscosité VFT de l'éthanol à 50°C
T = 50 + 273.15
eta = vft_viscosity(T, CommonLiquids.Ethanol.vft)
print(f"Viscosité de l'éthanol à 50°C : {format_value(eta, 'Pa·s')}")
# Utilisation de constantes VFT personnalisées
from UliEngineering.Physics.Viscosity import VFTConstants
custom = VFTConstants(name="Custom liquid", A=1.0e-5, B=500.0, T0=120.0)
eta = vft_viscosity(300.0, custom)
print(f"Viscosité du liquide personnalisé à 300K : {format_value(eta, 'Pa·s')}")Exemple de sortie
Viscosité de l'eau à 20°C : 1.00 mPa·s
Viscosité de l'éthanol à 50°C : 1.06 µPa·s
Viscosité du liquide personnalisé à 300K : 2.38 mPa·sL’équation VFT est donnée par :
$$ \eta = A \cdot \exp\left(\frac{B}{T - T_0}\right) $$où $\eta$ est la viscosité dynamique, $T$ est la température absolue en Kelvin, $A$, $B$ et $T_0$ sont des constantes spécifiques au matériau. Le paramètre $T_0$ est appelé température de Vogel et représente la température à laquelle la viscosité divergerait théoriquement vers l’infini.
Le modèle VFT est particulièrement précis pour les liquides formant des verres et les liquides surfondus car il capture le comportement non-Arrhenius près de la température de transition vitreuse. Le graphique ci-dessus montre le modèle de viscosité VFT pour plusieurs liquides courants sur une plage de température de 0°C à 100°C.
La bibliothèque UliEngineering fournit des constantes VFT prédéfinies pour des liquides courants comme l’eau, l’éthanol, le méthanol, la glycérine, l’huile d’olive, le mercure, l’acétone et le benzène via la classe CommonLiquids.
Articles liés
- Comment calculer la viscosité d’Andrade en Python avec UliEngineering
- Comment calculer la viscosité de gaz de Sutherland en Python avec UliEngineering
- Comment calculer la viscosité de Swindells 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 (
vft_viscosity,
CommonLiquids,
)
# Plage de température en Celsius pour le tracé
T_C = np.linspace(0, 100, 200) # 0 à 100°C
T_K = T_C + 273.15 # Convertir en Kelvin
# Créer le graphique
plt.figure(figsize=(10, 6))
# Tracer pour différents liquides courants
liquids_to_plot = [
('Water', CommonLiquids.Water.vft, 'blue'),
('Ethanol', CommonLiquids.Ethanol.vft, 'green'),
('Methanol', CommonLiquids.Methanol.vft, 'red'),
('Glycerol', CommonLiquids.Glycerol.vft, 'purple'),
]
for name, constants, color in liquids_to_plot:
eta = vft_viscosity(T_K, constants) * 1000 # Convertir en mPa·s
plt.plot(T_C, eta, label=name, color=color, linewidth=2)
plt.xlabel('Température (°C)', fontsize=12)
plt.ylabel('Viscosité dynamique (mPa·s)', fontsize=12)
plt.title('Modèle de viscosité VFT pour les liquides courants', fontsize=14, fontweight='bold')
plt.legend(loc='upper right', fontsize=10)
plt.grid(True, alpha=0.3)
plt.yscale('log') # Échelle logarithmique car les viscosités couvrent plusieurs ordres de grandeur
plt.tight_layout()
plt.savefig('vft_viscosity_plot.svg', format='svg', dpi=300)
print("Graphique enregistré dans vft_viscosity_plot.svg")