レイノルズ数の計算方法|配管内の層流・乱流を判定する式とPython実装

「レイノルズ数の計算方法|配管内の層流・乱流を判定する式とPython実装」の内容を表す技術イラスト

配管の圧力損失を計算するとき、最初から摩擦係数を決めることはできません。

まず確認する必要があるのが、配管内の流れが層流なのか、乱流なのかです。

その判定に使われる代表的な無次元数が**レイノルズ数(Reynolds number)**です。

レイノルズ数は、流体に働く慣性の影響と粘性の影響の比を表します。NASA Glenn Research Centerも、レイノルズ数を慣性力と粘性力の相対的な大きさを表す量として説明しています。

円管内の流れでは、Re=ρvDμRe=\frac{\rho vD}{\mu}

または動粘度を使って、Re=vDνRe=\frac{vD}{\nu}

と計算できます。

レイノルズ数そのものには単位がありません。

この値を計算できるようになると、

流量
↓
流速
↓
レイノルズ数
↓
流れの状態
↓
摩擦係数
↓
圧力損失

という配管計算の基本的な流れを構築できます。

目次

レイノルズ数とは

レイノルズ数は、流れの中で慣性の影響と粘性の影響のどちらが支配的かを見るための無次元数です。

円管内流れでは、Re=ρvDμRe=\frac{\rho vD}{\mu}

を使えます。

各変数は次のとおりです。

記号意味SI単位
ReReレイノルズ数なし
ρ\rho流体密度kg/m³
vv平均流速m/s
DD管内径m
μ\mu粘度(動粘性係数)Pa·s

NASAの解説でも、Re=VρlμRe=\frac{V\rho l}{\mu}

という形が示されています。ここでllは対象に応じて選ぶ代表長さです。

円管内流れでは、この代表長さとして管内径を使用します。

動粘度を使う場合

粘度には、粘度μ\muと動粘度ν\nuがあります。

両者には、ν=μρ\nu=\frac{\mu}{\rho}

という関係があります。

したがって、Re=ρvDμRe=\frac{\rho vD}{\mu}

へ、μ=ρν\mu=\rho\nu

を代入すると、Re=ρvDρνRe = \frac{\rho vD}{\rho\nu}

となり、密度が消えて、Re=vDνRe=\frac{vD}{\nu}

となります。

動粘度が既知なら、こちらの式の方が入力項目を減らせます。

ただし、粘度と動粘度を混同すると計算結果が大きく変わるため、データを扱うときは単位まで確認する必要があります。

レイノルズ数が無次元になることを確認する

式、Re=ρvDμRe=\frac{\rho vD}{\mu}

へSI単位を代入してみます。

密度は、[ρ]=kg/m3[\rho]=\mathrm{kg/m^3}

流速は、[v]=m/s[v]=\mathrm{m/s}

内径は、[D]=m[D]=\mathrm{m}

粘度は、[μ]=Pa⋅s[\mu]=\mathrm{Pa\cdot s}

です。

さらに、Pa⋅s=kg/(m⋅s)\mathrm{Pa\cdot s} = \mathrm{kg/(m\cdot s)}

なので、Re=(kg/m3)(m/s)(m)kg/(m⋅s)Re = \frac{ (\mathrm{kg/m^3}) (\mathrm{m/s}) (\mathrm{m}) }{ \mathrm{kg/(m\cdot s)} }

となります。

整理すると単位はすべて消えます。

したがって、レイノルズ数は無次元量です。

プログラムで計算するときにも、入力をSI単位へ統一してから計算すると単位ミスを減らせます。

流量から平均流速を求める

実務では流速より流量が与えられる場合が多いため、まず流量から平均流速を求めます。

円管の断面積は、A=πD24A=\frac{\pi D^2}{4}

です。

体積流量をQQとすると、v=QAv=\frac{Q}{A}

なので、v=4QπD2v= \frac{4Q}{\pi D^2}

となります。

したがって計算の流れは、Q→v→ReQ \rightarrow v \rightarrow Re

です。

この2式を組み合わせれば、Re=4ρQπDμRe = \frac{4\rho Q}{\pi D\mu}

とも表せます。

動粘度を使う場合は、Re=4QπDνRe= \frac{4Q}{\pi D\nu}

です。

計算例

例として、次の条件を考えます。

  • 管内径:20 mm
  • 流量:20 L/min
  • 動粘度:30×10−6 m2/s30\times10^{-6}\,\mathrm{m^2/s}

まず単位をSI単位へ変換します。

内径は、D=20 mm=0.020 mD=20\ \mathrm{mm}=0.020\ \mathrm{m}

です。

流量は、20 L/min20\ \mathrm{L/min}

なので、Q=20×10−360Q = \frac{20\times10^{-3}}{60}Q≈3.33×10−4 m3/sQ \approx 3.33\times10^{-4}\ \mathrm{m^3/s}

となります。

断面積は、A=π(0.020)24A = \frac{\pi(0.020)^2}{4}A≈3.14×10−4 m2A \approx 3.14\times10^{-4}\ \mathrm{m^2}

です。

したがって平均流速は、v=3.33×10−43.14×10−4v = \frac{3.33\times10^{-4}} {3.14\times10^{-4}}v≈1.06 m/sv\approx1.06\ \mathrm{m/s}

です。

レイノルズ数は、Re=vDνRe=\frac{vD}{\nu}

なので、Re=1.06×0.02030×10−6Re = \frac{ 1.06\times0.020 }{ 30\times10^{-6} }

より、Re≈707Re\approx707

となります。

この条件では粘性の影響が強い流れであることが分かります。

層流・乱流の境界は絶対値ではない

配管内流れでは、レイノルズ数を使って層流・遷移領域・乱流を区別します。

ただし、境界値を自然界の絶対的なスイッチとして扱わないことが重要です。

NASAの技術資料には、配管内流れの判定でRe=2300Re=2300を遷移点として扱った計算例があります。

一方で、実際の遷移は、

  • 管入口の状態
  • 外乱
  • 振動
  • 配管形状
  • 表面状態

などにも影響されます。

したがって実装では、

Re < 2300
→ 層流側

遷移領域
→ 要注意

十分に大きいRe
→ 乱流側

のように、境界付近を独立した領域として扱う方が安全です。

特に設計ソフトでは「2300を1だけ超えたので完全な乱流」といった二値判定を避ける設計が適しています。

なぜ圧力損失計算の前に必要なのか

レイノルズ数が重要なのは、配管摩擦係数の決定方法が流れの状態によって変わるためです。

直円管の層流では、Darcy摩擦係数fDf_Dは、fD=64Ref_D=\frac{64}{Re}

で表せます。

Darcy–Weisbach式は、Δp=fDLDρv22\Delta p = f_D \frac{L}{D} \frac{\rho v^2}{2}

です。

したがって、

内径・流量・粘度
↓
流速
↓
Re
↓
流動状態
↓
摩擦係数
↓
圧力損失

という依存関係になります。

ここで重要なのは、摩擦係数fDf_Dを固定値として扱わないことです。

流量や粘度が変わればレイノルズ数が変化し、それによって摩擦係数の決定方法も変化します。

Darcy摩擦係数とFanning摩擦係数を混同しない

配管計算をコード化するときに注意したいのが、摩擦係数の定義です。

Darcy摩擦係数とFanning摩擦係数には、fD=4fFf_D=4f_F

という関係があります。

したがって、別の資料から摩擦係数の式だけをコピーすると、4倍の差が生じる可能性があります。

層流円管で、fD=64Ref_D=\frac{64}{Re}

ならDarcy摩擦係数です。

圧力損失計算をデータ化するときは、

{
  "friction_factor_definition": "darcy"
}

のように、係数の種類そのものを明示的な属性として持たせると安全です。

油圧配管では粘度の温度依存に注意する

油圧油では、レイノルズ数を計算するときの粘度が重要です。

式、Re=vDνRe=\frac{vD}{\nu}

を見ると、動粘度ν\nuが大きくなるほどレイノルズ数は小さくなります。

つまり同じ配管・同じ流量でも、油温によって流れの状態が変化する可能性があります。

したがって、

油種
↓
温度
↓
動粘度
↓
Re
↓
摩擦係数
↓
圧力損失

という依存関係を意識する必要があります。

カタログに40℃と100℃の粘度しか掲載されていない場合でも、根拠なく単純補間してよいとは限りません。メーカーが粘度温度特性や計算法を示している場合は、その方法を優先します。

Pythonで計算する

流量、内径、動粘度からレイノルズ数を求める関数は、次のように作れます。

import math


def reynolds_number_from_flow(
    flow_l_min: float,
    diameter_mm: float,
    kinematic_viscosity_m2_s: float,
) -> float:
    if flow_l_min <= 0:
        raise ValueError("流量は0より大きい必要があります")

    if diameter_mm <= 0:
        raise ValueError("内径は0より大きい必要があります")

    if kinematic_viscosity_m2_s <= 0:
        raise ValueError("動粘度は0より大きい必要があります")

    flow_m3_s = flow_l_min * 1e-3 / 60
    diameter_m = diameter_mm * 1e-3

    area_m2 = math.pi * diameter_m**2 / 4
    velocity_m_s = flow_m3_s / area_m2

    reynolds = (
        velocity_m_s
        * diameter_m
        / kinematic_viscosity_m2_s
    )

    return reynolds


re = reynolds_number_from_flow(
    flow_l_min=20,
    diameter_mm=20,
    kinematic_viscosity_m2_s=30e-6,
)

print(re)

結果はおよそ、

707

です。

判定ロジックを計算式から分離する

実用的な設計ツールでは、計算と判定を分離すると扱いやすくなります。

def classify_pipe_flow(reynolds: float) -> str:
    if reynolds < 2300:
        return "laminar"

    if reynolds < 4000:
        return "transition"

    return "turbulent"

ここで2300と4000はモデル上の判定基準として扱います。

実際の遷移条件が配管・入口条件・外乱などに依存することを考えれば、値をコード内部へ散在させるより、

{
  "pipe_flow_regime": {
    "laminar_max_re": 2300,
    "turbulent_min_re": 4000,
    "transition_policy": "warning"
  }
}

のように設定データとして分離する設計も有効です。

そうすれば、採用する規格や計算基準に応じて変更できます。

入力データに単位を持たせる

工学計算の自動化では、式よりも単位変換で間違えることがあります。

たとえば、

{
  "flow_rate": {
    "value": 20,
    "unit": "L/min"
  },
  "inside_diameter": {
    "value": 20,
    "unit": "mm"
  },
  "kinematic_viscosity": {
    "value": 30,
    "unit": "mm2/s"
  }
}

のように値と単位をセットで保持できます。

計算処理では、

入力
↓
単位検証
↓
SI単位へ変換
↓
流速
↓
Re
↓
流動状態

と処理します。

これならWebツール、Python、APIなどで同じ計算ルールを再利用しやすくなります。

非円形流路では水力直径を検討する

ここまでの式では円管を前提として代表長さに内径DDを使用しました。

非円形ダクトなどでは、代表長さとして水力直径、Dh=4APD_h=\frac{4A}{P}

が使われることがあります。

ここで、

  • AA:流路断面積
  • PP:濡れ縁長さ

です。

ただし、形状によって流れや摩擦係数の扱いが異なるため、「内径を水力直径へ置き換えればすべて同じ」と一般化するのは危険です。

対象形状に適用可能な相関式か確認する必要があります。

レイノルズ数だけでは圧力損失は決まらない

レイノルズ数は重要ですが、これだけで配管圧力損失が決定するわけではありません。

少なくとも、

  • 配管長さ
  • 内径
  • 流速
  • 密度
  • 粘度
  • 管内面粗さ
  • 流動状態

などが関係します。

さらに実配管では、

  • エルボ
  • ティー
  • バルブ
  • 継手
  • フィルタ
  • 熱交換器

などによる局所損失もあります。

したがって、レイノルズ数計算は圧力損失計算チェーンの一要素と位置付けるのが適切です。

まとめ

円管内流れのレイノルズ数は、Re=ρvDμRe=\frac{\rho vD}{\mu}

または、Re=vDνRe=\frac{vD}{\nu}

で求められます。

流量しか分からない場合は、v=4QπD2v=\frac{4Q}{\pi D^2}

から平均流速を求めます。

レイノルズ数を計算すると、流れが層流側なのか、遷移領域なのか、乱流側なのかを判断する基礎情報になります。

そしてその結果は、Re→摩擦係数→圧力損失Re \rightarrow 摩擦係数 \rightarrow 圧力損失

へつながります。

実務でコード化する場合は、式だけを実装するのではなく、

  • 入力単位
  • 粘度の種類
  • 温度条件
  • 流動状態の判定基準
  • 摩擦係数の定義
  • 適用範囲

までデータとして管理すると、再利用可能で検証しやすい計算ロジックになります。

参考情報

NASA Glenn Research Center — Boundary Layer / Reynolds Number

NASA Technical Reports Server — Reynolds Number Calculation example

参考になったらシェアしてください
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

機械設計・油圧・CAD・Python・AIなど、ものづくりに関わる技術を扱っています。工学知識を整理・構造化し、設計や自動化に再利用できる形へ変えていくことを目指しています。

目次