Як обчислити в'язкість VFT у Python за допомогою UliEngineering
Ви можете легко обчислити в’язкість рідин VFT (Фогеля-Фульчера-Таммана) за допомогою бібліотеки Python UliEngineering. Рівняння VFT — це трипараметрична модель, яка забезпечує відмінну точність для опису температурної залежності в’язкості, особливо для склоутворюючих рідин:
from UliEngineering.Physics.Viscosity import vft_viscosity, CommonLiquids
from UliEngineering.EngineerIO import *
# Обчислити в'язкість VFT води при 20°C
T = 20 + 273.15 # Convert to Kelvin
eta = vft_viscosity(T, CommonLiquids.Water.vft)
print(f"В'язкість води при 20°C: {format_value(eta, 'Па·с')}")
# Обчислити в'язкість VFT етанолу при 50°C
T = 50 + 273.15
eta = vft_viscosity(T, CommonLiquids.Ethanol.vft)
print(f"В'язкість етанолу при 50°C: {format_value(eta, 'Па·с')}")
# Використання власних констант VFT
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"В'язкість власної рідини при 300K: {format_value(eta, 'Па·с')}")Приклад виводу
В'язкість води при 20°C: 1,00 мПа·с
В'язкість етанолу при 50°C: 1,06 мкПа·с
В'язкість власної рідини при 300K: 2,38 мПа·сРівняння VFT має вигляд:
$$ \eta = A \cdot \exp\left(\frac{B}{T - T_0}\right) $$де $\eta$ — динамічна в’язкість, $T$ — абсолютна температура в кельвінах, $A$, $B$ та $T_0$ — матеріалоспецифічні константи. Параметр $T_0$ називається температурою Фогеля і відображає температуру, при якій в’язкість теоретично прямує до нескінченності.
Модель VFT є особливо точною для склоутворюючих рідин та переохолоджених рідин, оскільки вона враховує неарреніусову поведінку поблизу температури склування. Графік вище показує модель в’язкості VFT для кількох поширених рідин у діапазоні температур від 0°C до 100°C.
Бібліотека UliEngineering надає заздалегідь визначені константи VFT для поширених рідин, таких як вода, етанол, метанол, гліцерол, оливкова олія, ртуть, ацетон та бензол, через клас CommonLiquids.
Пов’язані публікації
- How to compute Andrade viscosity in Python using UliEngineering
- How to compute Sutherland gas viscosity in Python using UliEngineering
- How to compute Swindells viscosity in Python using UliEngineering
Скрипт генерації графіка
#!/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,
)
# Діапазон температур у Цельсіях для побудови графіка
T_C = np.linspace(0, 100, 200) # 0 to 100°C
T_K = T_C + 273.15 # Convert to Kelvin
# Створити графік
plt.figure(figsize=(10, 6))
# Побудувати графік для різних поширених рідин
liquids_to_plot = [
('Вода', CommonLiquids.Water.vft, 'blue'),
('Етанол', CommonLiquids.Ethanol.vft, 'green'),
('Метанол', CommonLiquids.Methanol.vft, 'red'),
('Гліцерол', CommonLiquids.Glycerol.vft, 'purple'),
]
for name, constants, color in liquids_to_plot:
eta = vft_viscosity(T_K, constants) * 1000 # Convert to mPa·s
plt.plot(T_C, eta, label=name, color=color, linewidth=2)
plt.xlabel('Температура (°C)', fontsize=12)
plt.ylabel('Динамічна в'язкість (мПа·с)', fontsize=12)
plt.title('Модель в'язкості VFT для поширених рідин', 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('vft_viscosity_plot.svg', format='svg', dpi=300)
print("Plot saved to vft_viscosity_plot.svg")