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

Ви можете легко обчислити в’язкість газу Сазерленда за допомогою бібліотеки Python UliEngineering. Модель Сазерленда широко використовується для опису температурної залежності в’язкості газів:

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

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

sutherland_viscosity_output.txt
В'язкість повітря при 20°C: 18,3 мкПа·с
В'язкість азоту при 100°C: 20,9 мкПа·с
В'язкість власного газу при 300K: 18,4 мкПа·с

sutherland viscosity plot.svg

Рівняння Сазерленда має вигляд:

$$ \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.

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


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

plot_sutherland_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 (
    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")

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