Як обчислити в'язкість VFT у Python за допомогою UliEngineering

Ви можете легко обчислити в’язкість рідин VFT (Фогеля-Фульчера-Таммана) за допомогою бібліотеки Python UliEngineering. Рівняння VFT — це трипараметрична модель, яка забезпечує відмінну точність для опису температурної залежності в’язкості, особливо для склоутворюючих рідин:

vft_viscosity.py
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, 'Па·с')}")

Приклад виводу

vft_viscosity_output.txt
В'язкість води при 20°C: 1,00 мПа·с
В'язкість етанолу при 50°C: 1,06 мкПа·с
В'язкість власної рідини при 300K: 2,38 мПа·с

vft viscosity plot.svg

Рівняння 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.

Пов’язані публікації


Скрипт генерації графіка

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,
)

# Діапазон температур у Цельсіях для побудови графіка
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")

Дивіться схожі статті за категоріями: Physics, Python