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

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

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

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

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

# Использование пользовательских констант Свинделлса
from UliEngineering.Physics.Viscosity import SwindellsConstants
custom = SwindellsConstants(name="Custom liquid", eta_ref=1.0e-3, T_ref=293.15, a=1.5, b=-150.0)
eta = swindells_viscosity(300.0, custom)
print(f"Custom liquid viscosity at 300K: {format_value(eta, 'Pa·s')}")

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

swindells_viscosity_output.txt
Water viscosity at 20°C: 1.00 mPa·s
Water viscosity at 50°C: 546 µPa·s
Custom liquid viscosity at 300K: 1.00 mPa·s

swindells viscosity plot.svg

Корреляция Свинделлса задаётся формулой:

$$ \eta = \eta_{ref} \cdot 10^{\left(-\frac{a \cdot (T - T_{ref})}{T + b}\right)} $$

где $\eta$ — динамическая вязкость, $T$ — абсолютная температура в кельвинах, $\eta_{ref}$ — опорная вязкость при эталонной температуре $T_{ref}$, а $a$ и $b$ — эмпирические параметры, специфичные для жидкости.

Корреляция Свинделлса была разработана специально для воды и обеспечивает отличную точность в широком диапазоне температур. Она особенно полезна в инженерных применениях, где вязкость воды должна быть рассчитана при различных температурах.

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

Библиотека UliEngineering предоставляет предопределённые константы Свинделлса для воды через CommonLiquids.Water.swindells. Пользовательские константы могут быть определены с помощью класса данных SwindellsConstants для других жидкостей.

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


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

plot_swindells_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 (
    swindells_viscosity,
    CommonLiquids,
)

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

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

# График для воды с использованием корреляции Свинделлса
eta = swindells_viscosity(T_K, CommonLiquids.Water.swindells) * 1000  # Преобразование в мПа·с
plt.plot(T_C, eta, label='Water', color='blue', linewidth=2)

plt.xlabel('Temperature (°C)', fontsize=12)
plt.ylabel('Dynamic Viscosity (mPa·s)', fontsize=12)
plt.title('Swindells Viscosity Correlation for Water', fontsize=14, fontweight='bold')
plt.legend(loc='upper right', fontsize=10)
plt.grid(True, alpha=0.3)

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

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