Как вычислить вязкость по Андраде на Python с помощью UliEngineering

Можно легко вычислить вязкость жидкостей по Андраде с помощью библиотеки Python UliEngineering. Уравнение Андраде — модель аррениусовского типа, описывающая температурную зависимость вязкости:

K
Pa·s
K
andrade_viscosity.py
from UliEngineering.Physics.Viscosity import andrade_viscosity, CommonLiquids
from UliEngineering.EngineerIO import *

# Вычислить вязкость Андраде воды при 20°C
T = 20 + 273.15  # Преобразование в кельвины
eta = andrade_viscosity(T, CommonLiquids.Water.andrade)
print(f"Water viscosity at 20°C: {format_value(eta, 'Pa·s')}")

# Вычислить вязкость Андраде этанола при 50°C
T = 50 + 273.15
eta = andrade_viscosity(T, CommonLiquids.Ethanol.andrade)
print(f"Ethanol viscosity at 50°C: {format_value(eta, 'Pa·s')}")

# Использование пользовательских констант Андраде
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"Custom liquid viscosity at 300K: {format_value(eta, 'Pa·s')}")

Пример вывода

andrade_viscosity_output.txt
Water viscosity at 20°C: 1.00 mPa·s
Ethanol viscosity at 50°C: 1.05 µPa·s
Custom liquid viscosity at 300K: 2.35 mPa·s

andrade viscosity plot.svg

Уравнение Андраде задаётся формулой:

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

где $\eta$ — динамическая вязкость, $T$ — абсолютная температура в кельвинах, а $A$ и $B$ — специфичные для материала константы. Параметр $B$ связан с энергией активации вязкого течения.

График выше показывает модель вязкости Андраде для нескольких распространённых жидкостей в диапазоне температур от 0°C до 100°C. Обратите внимание, что вязкость уменьшается экспоненциально с температурой, что характерно для большинства жидкостей.

Библиотека UliEngineering предоставляет предопределённые константы Андраде для распространённых жидкостей, таких как вода, этанол, метанол, глицерин, оливковое масло, ртуть, ацетон и бензол, через класс CommonLiquids.

Связанные записи


Скрипт для построения графика

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

# Диапазон температур в градусах Цельсия для построения графика
T_C = np.linspace(0, 100, 200)  # от 0 до 100°C
T_K = T_C + 273.15  # Преобразование в кельвины

# Создание графика
plt.figure(figsize=(10, 6))

# График для разных распространённых жидкостей
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  # Преобразование в мПа·с
    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')  # Логарифмическая шкала, так как вязкости охватывают порядки величин

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

Check out similar posts by category: Calculators, Physics, Python