プラントエンジニアリング

【Python,fluids】流体解析に便利なライブラリ(fluids)の紹介

プラントエンジニアリング

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, [-]

計算方法には、様々な方法があるので、詳細な導出方法については省略します。

対応している計算方法としては、ClamondColebrookMoodyAlshul_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(KrhoV)

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は最も様々な関数を兼ね備えています。今回は、基本的な使い方を紹介していますが、もっと専門的な使い方もできますので、ぜひドキュメントをみて、色々トライしてみることをオススメします。

プラントエンジニアリング
最新情報をチェックしよう!