Як обчислити в'язкість газу Сазерленда у Python за допомогою UliEngineering
Ви можете легко обчислити в’язкість газу Сазерленда за допомогою бібліотеки Python UliEngineering. Модель Сазерленда широко використовується для опису температурної залежності в’язкості газів:
from UliEngineering.Physics.Viscosity import sutherland_gas_viscosity, CommonGases
from UliEngineering.EngineerIO import *
# Обчислити в'язкість Сазерленда повітря при 20°C
T = 20 + 273.15 # Convert to Kelvin
mu = sutherland_gas_viscosity(T, CommonGases.Air.sutherland)
print(f"В'язкість повітря при 20°C: {format_value(mu, 'Па·с')}")
# Обчислити в'язкість Сазерленда азоту при 100°C
T = 100 + 273.15
mu = sutherland_gas_viscosity(T, CommonGases.Nitrogen.sutherland)
print(f"В'язкість азоту при 100°C: {format_value(mu, 'Па·с')}")
# Використання власних констант Сазерленда
from UliEngineering.Physics.Viscosity import SutherlandConstants
custom = SutherlandConstants(name="Custom gas", mu0=1.8e-5, T0=273.15, C=120.0)
mu = sutherland_gas_viscosity(300.0, custom)
print(f"В'язкість власного газу при 300K: {format_value(mu, 'Па·с')}")Приклад виводу
В'язкість повітря при 20°C: 18,3 мкПа·с
В'язкість азоту при 100°C: 20,9 мкПа·с
В'язкість власного газу при 300K: 18,4 мкПа·сРівняння Сазерленда має вигляд:
$$ \mu = \mu_0 \cdot \frac{T_0 + C}{T + C} \cdot \left(\frac{T}{T_0}\right)^{3/2} $$де $\mu$ — динамічна в’язкість, $T$ — абсолютна температура у Кельвінах, $\mu_0$ — опорна в’язкість при опорній температурі $T_0$, а $C$ — константа Сазерленда, специфічна для кожного газу.
На відміну від рідин, в’язкість газів збільшується з температурою через посилення молекулярного руху та зіткнень. Модель Сазерленда точно відтворює цю поведінку у широкому діапазоні температур і є особливо корисною для інженерних розрахунків, що пов’язані з газами.
Графік вище показує модель в’язкості Сазерленда для поширених газів (повітря, азоту, кисню, вуглекислого газу та гелію) у діапазоні температур від 0°C до 1000°C. Зверніть увагу, що всі гази демонструють зростання в’язкості з температурою, причому гелій має найвищу в’язкість загалом.
Бібліотека UliEngineering надає наперед визначені константи Сазерленда для поширених газів, таких як повітря, азот, кисень, вуглекислий газ та гелій, через клас CommonGases.
Пов’язані публікації
- How to compute Andrade viscosity in Python using UliEngineering
- How to compute VFT 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 (
sutherland_gas_viscosity,
CommonGases,
)
# Діапазон температур у Цельсіях для побудови графіка (-273 до 1000°C за пропозицією користувача)
T_C = np.linspace(0, 1000, 200) # 0 to 1000°C
T_K = T_C + 273.15 # Convert to Kelvin
# Створити графік
plt.figure(figsize=(10, 6))
# Побудувати графік для різних поширених газів
gases_to_plot = [
('Повітря', CommonGases.Air.sutherland, 'blue'),
('Азот', CommonGases.Nitrogen.sutherland, 'green'),
('Кисень', CommonGases.Oxygen.sutherland, 'red'),
('Вуглекислий газ', CommonGases.CarbonDioxide.sutherland, 'purple'),
('Гелій', CommonGases.Helium.sutherland, 'orange'),
]
for name, constants, color in gases_to_plot:
mu = sutherland_gas_viscosity(T_K, constants) * 1e6 # Convert to µPa·s
plt.plot(T_C, mu, label=name, color=color, linewidth=2)
plt.xlabel('Температура (°C)', fontsize=12)
plt.ylabel('Динамічна в'язкість (мкПа·с)', fontsize=12)
plt.title('Модель в'язкості газу Сазерленда для поширених газів', fontsize=14, fontweight='bold')
plt.legend(loc='upper left', fontsize=10)
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('sutherland_viscosity_plot.svg', format='svg', dpi=300)
print("Plot saved to sutherland_viscosity_plot.svg")