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 :

vft_viscosity.py
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

vft_viscosity_output.txt
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·s

vft viscosity plot.svg

L’é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


Script de génération du graphique

plot_vft_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 (
    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")

Check out similar posts by category: Physics, Python