fluidsはpythonのオープンソースのライブラリ1つであり、化学、機械工学、土木のエンジニアなど、あらゆるエンジニアによって、有用なライブラリです。
具体的には、以下のような計算に対応できるライブラリです。
- 圧力損失
- レイノルズ数
- 配管摩擦係数
- 大気条件の物性値
- CVのサイジング
- 二相流圧力損失
今回は、『レイノルズ数』と『摩擦係数』、『圧力損失計算』について紹介します。
チュートリアル
レイノルズ数
\[ Re = \frac{D \cdot V}{\nu} = \frac{\rho V D}{\mu} \]レイノルズ数の算出は、上記の式です。
そこで、以下のライブラリを使用します。
fluids.Reynolds(V, D, rho=None, mu=None, nu=None)
V : float Velocity [m/s] 、D : float, Diameter [m] 、rho : float, optional Density, [kg/m3]
mu : float, optional Dynamic viscosity, [Pa*s]
nu : float, optional Kinematic viscosity, [m2/s]
計算には、代表長さ(D)と代表速度(V)は必須がなります。
その他引数には、粘性(rho)&密度(mu)、または動粘性(nu)が必要となります。
以下が計算例となります。
import fluids
#代表長さ
D = 0.01*u.m
V = 1.5 *(u.m/u.s)
mu = 1E-3 *(u.Pa*u.s)
rho = 1000 *((u.m)**2/u.s)
nu = mu/rho
Re1 = fluids.Reynolds(D=0.01, V=1.5, nu=1E-6)
print(Re1)
>>> 15000.0
Re2 = fluids.Reynolds(D=0.01, rho=1000, V=1.5, mu=1E-3)
print(Re2)
>>> 15000.0
ここでは、astropy.unitを用いて、単位を入れて計算しています。レイノルズ数は、無次元なので計算が正しければ単位が表示されないはずです。
詳細については、以下をご覧ください。
摩擦係数
摩擦係数は、配管の圧力損失の計算時の用いる係数の一種です。
fluids.friction_factor(Re, eD=0.0, Method=’Clamond’, Darcy=True)
Re : float, Reynolds number, [-] 、eD : float, Relative roughness of the wall, [-]
計算方法には、様々な方法があるので、詳細な導出方法については省略します。
対応している計算方法としては、Clamond、Colebrook、Moody、Alshul_1952など約30種類の計算に対応しています。指定がない場合には、Clamondの式となります。
ただし、平均荒さ(eD)を指定しない場合と層流の場合は、laminarの式になります。
また、Darcy=flaseにした場合は、fannnigの式となります。
以下が計算例となります。
epsilon = 1.5E-6 # m, clean steel
# Clamondの式
fluids.friction.friction_factor(Re=15000, eD=epsilon/0.01)
0.028087909385731864
# laminarの式
fluids.friction.friction_factor(Re=150)
0.4266666666666667
圧力損失計算
圧力損失の計算は、手間が増えます。
まず、配管損失係数(K)を求めます。
\[ K = f_d \frac{L}{D} \]fluids.K_from_f(fd, L, D)
Parameters
fd : float, friction factor of pipe, [] 、 L : float, Length of pipe, [m]
D : float, Inner diameter of pipe, [m]
その後、配管損失係数(K)を用いて、圧力損失(dp)を計算します。
\[ dP = 0.5 K V^{2} \]fluids.dP_from_K(K, rho, V)
K: float, Loss coefficient, [] 、 V : float, Velocity of fluid in pipe, [m/s]
rho : float, optional Density, [kg/m3]
以下の例では、ある条件の蒸気による配管圧力損失を計算しています。
import fluids
from astropy import units as u
from iapws import iapws97
import numpy as np
# 配管径
D = 0.2191 *u.m
L = 20 *u.m
#体積流量
Q = 1 *(u.m**3/u.s)
# 流体条件
T = 150 *u.deg_C
Pg = 50 *u.kPa #kPaG
# 標高500mにおける大気条件
atm = fluids.ATMOSPHERE_1976(Z=500) #Pa
# 絶対圧
Pa = Pg + atm.P*u.Pa/1000 #kPaA
# 蒸気のパラメータ
parameter = para = iapws97.IAPWS97(P=Pa.value/1000,T= T.value+273.15)
rho = para.rho *(u.kg/(u.m)**3)
mu = para.mu *(u.Pa*u.s)
# 配管流速
V = Q/(np.pi*(D/2)**2) # m/s = m3/s・1/m2)
print(V)
>>> 26.523166006389005 m / s
# レイノルズ数
Re = fluids.Reynolds(V=V, rho=rho, mu=mu, D=D)
Re = Re.decompose()
print(Re)
>>> 105242.38138682822
#管摩擦係数
f = fluids.friction.friction_factor(Re=Re,eD=0.0003/D.value)
K = fluids.K_from_f(fd=f, L=L, D=D)
dp = fluids.dP_from_K(K, rho=rho, V=V)
pressure_kgm2_to_Pa = [(u.kg/u.m*(u.s)**2,u.Pa)]
dp = dp.to(u.Pa, equivalencies = pressure_kgm2_to_Pa)
print(dp)
>>> 192.33562530378697 Pa
実際の使用条件に近づけるため、流体解析でよく用いるiapw.iapw97やastropy.unitを組み合わせてあります。やや複雑かもしれませんが、これができると非常に計算が楽になります。
iapw.iapw97やastropy.unitについては、別記事で解説していますので、合わせてご覧ください
まとめ
fluidsは最も様々な関数を兼ね備えています。今回は、基本的な使い方を紹介していますが、もっと専門的な使い方もできますので、ぜひドキュメントをみて、色々トライしてみることをオススメします。