UliEngineering を使って Python で動粘度を計算する方法

UliEngineering Python ライブラリを使うと、動的粘度と密度から動粘度を簡単に計算できます。

TechOverflow calculators:
You can enter values with SI suffixes like 12.2m (equivalent to 0.012) or 14k (14000) or 32u (0.000032).
The results are calculated while you type and shown directly below the calculator, so there is no need to press return or click on a Calculate button.
Pa·s ⚠
kg/m³ ⚠
kinematic_viscosity.py
from UliEngineering.Physics.Viscosity import kinematic_viscosity
from UliEngineering.EngineerIO import *

# 水の動粘度を計算
dynamic_viscosity = 0.001  # Pa·s
density = 998.2  # kg/m³
nu = kinematic_viscosity(dynamic_viscosity, density)
print(f"Kinematic viscosity: {format_value(nu, 'm²/s')}")

# 空気の動粘度を計算
dynamic_viscosity = 1.8e-5  # Pa·s
density = 1.225  # kg/m³
nu = kinematic_viscosity(dynamic_viscosity, density)
print(f"Air kinematic viscosity: {format_value(nu, 'm²/s')}")

# グリセロールの動粘度を計算
dynamic_viscosity = 1.412  # Pa·s(20°C で)
density = 1261.0  # kg/m³
nu = kinematic_viscosity(dynamic_viscosity, density)
print(f"Glycerol kinematic viscosity: {format_value(nu, 'm²/s')}")

出力例

kinematic_viscosity_output.txt
Kinematic viscosity: 1.00 mm²/s
Air kinematic viscosity: 14.7 mm²/s
Glycerol kinematic viscosity: 1.12 cm²/s

kinematic viscosity plot.svg

動粘度は次のように表されます:

$$ \nu = \frac{\eta}{\rho} $$

ここで、$\nu$ は動粘度、$\eta$ は動的粘度、$\rho$ は密度です。

動粘度は、流体中の粘性力と慣性力の比を表し、特にレイノルズ数の決定において流体力学の計算で広く使用されます。動的粘度が流体の流れに対する内部抵抗を記述するのに対し、動粘度は流体の密度も考慮します。

上のプロットは、固定密度 1000 kg/m³(ほぼ水)での動的粘度と動粘度の線形関係を示しています。この直線の傾きは密度の逆数に等しくなります。

動粘度は、境界層解析、管流計算、空気力学など、流体運動や運動量伝達を含む問題に特に有用です。m²/s の単位を持ち、拡散係数と同じ単位であり、運動量の拡散における役割を反映しています。

関連記事


プロット生成スクリプト

plot_kinematic_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 kinematic_viscosity

# プロット用の動的粘度範囲
eta = np.linspace(1e-4, 1e-2, 100)  # 0.1 から 10 mPa·s

# プロットを作成
plt.figure(figsize=(10, 6))

# 固定密度(水的)
rho = 1000.0  # kg/m³

# 動粘度を計算
nu = kinematic_viscosity(eta, rho) * 1e6  # mm²/s に変換

plt.plot(eta * 1000, nu, color='blue', linewidth=2)
plt.xlabel('Dynamic Viscosity (mPa·s)', fontsize=12)
plt.ylabel('Kinematic Viscosity (mm²/s)', fontsize=12)
plt.title('Kinematic Viscosity vs Dynamic Viscosity (ρ = 1000 kg/m³)', fontsize=14, fontweight='bold')
plt.grid(True, alpha=0.3)

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

同じカテゴリの類似記事をチェック: 計算機 物理 Python