配管の局所圧力損失をK値で求める|エルボ・バルブ・継手の損失係数とPython計算

エルボとバルブを通過する配管流れと、上流・下流の圧力差による局所圧力損失を示す技術イラスト

配管の局所圧力損失をK値で求める|エルボ・バルブ・継手の損失係数とPython計算

配管の圧力損失を計算するとき、直管部分だけを計算して終わりにしてはいけません。

実際の配管には、

  • エルボ
  • ティー
  • バルブ
  • 継手
  • 急拡大・急縮小
  • 入口・出口

などが存在します。

こうした部分では流れの方向や断面が変化し、追加のエネルギー損失が発生します。

これを一般に**局所損失(minor loss)**と呼びます。

代表的な計算方法が、損失係数 KK を使う方法です。hL=Kv22gh_L=K\frac{v^2}{2g}

圧力損失として表せば、ΔpL=Kρv22\Delta p_L=K\frac{\rho v^2}{2}

です。

ここで、

  • hLh_L:局所損失水頭 [m][\mathrm{m}]
  • ΔpL\Delta p_L:局所圧力損失 [Pa][\mathrm{Pa}]
  • KK:損失係数 [−][-]
  • ρ\rho:流体密度 [kg/m3][\mathrm{kg/m^3}]
  • vv:基準となる平均流速 [m/s][\mathrm{m/s}]
  • gg:重力加速度 [m/s2][\mathrm{m/s^2}]

を表します。

DOEの流体力学ハンドブックでも、エルボ、継手、バルブなどによる損失をこの形で表しています。なお「minor loss」という名称でも、実際には直管摩擦より大きな損失になる場合があるとDOEは注意しています。

目次

直管損失と局所損失は別に考える

直管の圧力損失にはDarcy-Weisbach式を使えます。Δpf=fDLDρv22\Delta p_f = f_D\frac{L}{D}\frac{\rho v^2}{2}

一方、局所損失は、ΔpL=Kρv22\Delta p_L = K\frac{\rho v^2}{2}

です。

形を比較すると、どちらにも、ρv22\frac{\rho v^2}{2}

が現れます。

これは動圧です。

したがって配管損失は概念的に、

流量
↓
流速
↓
動圧
├─ 直管 → f・L/D
└─ 継手 → K
↓
総圧力損失

と整理できます。

この構造を理解すると、直管計算と継手計算を同じ計算パイプラインへ統合できます。

K値とは何か

損失係数 KK は無次元量です。

局所的な圧力損失を動圧で正規化したものとして、K=ΔpLρv2/2K= \frac{\Delta p_L}{\rho v^2/2}

と考えられます。

つまりK値が大きいほど、同じ流速条件で大きな圧力損失が発生します。

重要なのは、K値自体にはPaやmといった単位がないことです。

NIST TN 2206でも、損失係数は無次元パラメータとして整理されています。

K値を掛けるだけでは不十分

式そのものは簡単です。

しかし実務で難しいのは、

どのK値を使うか

です。

エルボだから常に同じK値になるわけではありません。

実際の損失は、

  • 継手形状
  • 曲率
  • 内径
  • 開口状態
  • 流れ方向
  • Reynolds数
  • 表面状態
  • 上流・下流の流れ状態

などの影響を受けます。

NISTは、既存の配管継手損失データには古いものが多く、現代の継手や流動条件を十分代表しない場合があると指摘しています。

したがって設計では、メーカーが圧力損失データやK値を提示している場合には、その製品固有データを優先するのが合理的です。

K値はReynolds数に依存することがある

簡易計算では、

90°エルボ → K = 一定

のように扱うことがあります。

しかし、これは常に成立するわけではありません。

NIST TN 2206では、十分大きなReynolds数ではKをほぼ一定として扱える場合がある一方、低いReynolds数では多くの継手でKが変化し得るとしています。

さらに2025年のNIST TN 2342では、市販のプッシュ接続式エルボについて、損失係数がReynolds数の増加とともに変化し、一定領域へ近づく測定結果が報告されています。

したがってK値データを保存するなら、

{
  "k": 1.0,
  "reference_condition": {
    "reynolds_number": "source-dependent"
  },
  "source": "manufacturer_or_reference"
}

のように、値だけでなく適用条件と出典を持たせる方が安全です。

圧力損失を計算する

例として次の仮想条件を使います。

  • 流体密度:ρ=850 kg/m3\rho=850\ \mathrm{kg/m^3}
  • 配管内平均流速:v=3.0 m/sv=3.0\ \mathrm{m/s}
  • 使用する損失係数:K=1.0K=1.0

ここでK値は計算例用の仮定値であり、特定製品の値ではありません。

まず動圧を計算します。q=ρv22q= \frac{\rho v^2}{2}

したがって、q=850×3.022q= \frac{850\times3.0^2}{2}q=3825 Paq=3825\ \mathrm{Pa}

です。

局所圧力損失は、ΔpL=Kq\Delta p_L = Kq

なので、ΔpL=1.0×3825\Delta p_L = 1.0\times3825ΔpL=3825 Pa\Delta p_L = 3825\ \mathrm{Pa}

となります。

MPaへ変換すると、ΔpL=0.003825 MPa\Delta p_L = 0.003825\ \mathrm{MPa}

です。

流速が上がると損失は急増する

局所損失式には、v2v^2

が含まれています。

したがって、同じK値なら流速を2倍にすると、22=42^2=4

となり、圧力損失は4倍になります。

これは配管設計で非常に重要です。

配管径を小さくすると流速が上がります。

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

であり、v=QAv=\frac{Q}{A}

なので、同じ流量なら内径を小さくするほど流速が大きくなります。

つまり、

配管径を小さくする
↓
流速上昇
↓
動圧上昇
↓
直管損失増加
+
局所損失増加

という関係になります。

継手が多い配管では、流速を上げた影響が局所損失にも現れます。

複数の継手を計算する

同じ基準流速を使える複数の局所要素なら、K値を合計できます。Ktotal=K1+K2+⋯+KnK_{\mathrm{total}} = K_1+K_2+\cdots+K_n

したがって、ΔpL=Ktotalρv22\Delta p_L = K_{\mathrm{total}} \frac{\rho v^2}{2}

です。

たとえば計算上、K1=0.4K_1=0.4K2=0.7K_2=0.7K3=1.2K_3=1.2

という仮定値を使うなら、Ktotal=0.4+0.7+1.2=2.3K_{\mathrm{total}} = 0.4+0.7+1.2 = 2.3

となります。

ただし、配管径が途中で変わる場合は注意が必要です。

局所損失式の vv がどの断面の速度を基準として定義されたK値なのかを確認しなければなりません。

異なる径の要素を無条件に一つのK合計へ入れる設計は避けた方が安全です。

Pythonで局所損失を計算する

基本関数は非常に単純です。

def minor_pressure_loss(
    density: float,
    velocity: float,
    loss_coefficient: float,
) -> float:
    if density <= 0:
        raise ValueError("密度は0より大きい必要があります")

    if velocity < 0:
        raise ValueError("流速は0以上である必要があります")

    if loss_coefficient < 0:
        raise ValueError("損失係数Kは0以上である必要があります")

    return loss_coefficient * density * velocity**2 / 2

使用例は、

rho = 850.0
velocity = 3.0
k = 1.0

dp = minor_pressure_loss(
    density=rho,
    velocity=velocity,
    loss_coefficient=k,
)

print(dp)

となります。

結果の単位はPaです。

実務用の計算ライブラリへ発展させるなら、入力と出力の単位を明示する方がよいでしょう。

流量から直接計算できるようにする

通常の設計では流速ではなく、流量と配管内径が入力になることが多くあります。

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

流速は、v=QAv= \frac{Q}{A}

です。

Pythonなら、

import math


def pipe_velocity(
    flow_rate_m3_s: float,
    diameter_m: float,
) -> float:
    if flow_rate_m3_s < 0:
        raise ValueError("流量は0以上である必要があります")

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

    area = math.pi * diameter_m**2 / 4
    return flow_rate_m3_s / area

として流速計算を独立させられます。

その後、

velocity = pipe_velocity(flow_rate, diameter)
dp = minor_pressure_loss(rho, velocity, k)

と接続します。

このように流量計算と損失計算を別関数にすると、後で直管圧力損失やReynolds数計算にも同じ流速を再利用できます。

等価管長で表す方法

局所損失は、同じ圧力損失を発生させる直管長へ置き換えることもできます。

Darcy-Weisbach式、hf=fDLDv22gh_f= f_D\frac{L}{D}\frac{v^2}{2g}

と局所損失式、hL=Kv22gh_L= K\frac{v^2}{2g}

を等しいとすると、fDLeqD=Kf_D\frac{L_{\mathrm{eq}}}{D} = K

なので、Leq=KDfDL_{\mathrm{eq}} = \frac{KD}{f_D}

です。

DOEのハンドブックでもこの関係が示されています。

等価管長は、「このバルブは直管何m分の損失に相当するか」という形で直感的に理解できる利点があります。

ただし、Leq=KDfDL_{\mathrm{eq}} = \frac{KD}{f_D}

なので、摩擦係数 fDf_D に依存します。

したがって等価管長も絶対的な固定長として扱うのではなく、前提条件を確認する必要があります。

直管損失と局所損失を合算する

一定径の単純な配管なら、総損失は、Δptotal=Δpf+ΔpL\Delta p_{\mathrm{total}} = \Delta p_f+\Delta p_L

です。

展開すると、Δptotal=(fDLD+∑K)ρv22\Delta p_{\mathrm{total}} = \left( f_D\frac{L}{D} + \sum K \right) \frac{\rho v^2}{2}

となります。

この式は非常に重要です。

直管と継手を別々の世界として扱うのではなく、fDLDf_D\frac{L}{D}

と、∑K\sum K

という無次元の損失要素へ整理できます。

一定径区間なら、計算ロジックを非常にきれいに構造化できます。

配管径が変わる場合は区間分割する

実際の配管には異径継手や分岐があります。

その場合、v=QAv=\frac{Q}{A}

なので、径が変われば流速も変わります。

したがって、

区間A
D1 / v1 / f1 / K1

↓ 異径部

区間B
D2 / v2 / f2 / K2

のように区間へ分けて計算する方が安全です。

各局所損失について、

  • K値
  • 基準径
  • 基準流速
  • 流れ方向
  • 出典

を持たせれば、後から計算根拠を追跡できます。

K値をデータベース化するときの形

継手データを再利用するなら、単純に、

{
  "elbow_90": 0.9
}

のような辞書だけにしない方がよいでしょう。

K値は条件依存性を持つからです。

たとえば、

{
  "component_type": "elbow",
  "geometry": {
    "angle_deg": 90
  },
  "loss_coefficient": {
    "value": null,
    "symbol": "K",
    "dimension": "dimensionless"
  },
  "reference": {
    "source_type": "manufacturer",
    "source_id": null
  },
  "conditions": {
    "reynolds_number": null,
    "diameter": null,
    "flow_direction": null
  }
}

のように、値と条件を分離できます。

実データを登録するときだけ、確認済みの値を入れます。

これならメーカー資料、実験値、標準的参考値を同じ構造で管理できます。

よくある失敗

最も危険なのは、出典不明のK値を「標準値」として固定してしまうことです。

また、

  • Darcy摩擦係数とFanning摩擦係数を混同する
  • K値の基準速度を確認しない
  • 異径配管のKを単純合計する
  • 低Re領域でもK一定と仮定する
  • バルブの開度を無視する
  • 直管損失だけ計算して継手損失を忘れる

といったミスも考えられます。

特にバルブは、同じ形式でも開度によって流動抵抗が大きく変わるため、「バルブ種類」だけをキーにK値を決定するデータモデルでは不十分な場合があります。

圧力損失計算を一つのパイプラインにする

ここまでの計算をつなげると、

流量 Q
↓
管内径 D
↓
流速 v
↓
Reynolds数 Re
↓
Darcy摩擦係数 f
↓
直管損失
+
継手ごとのK
↓
局所損失
↓
総圧力損失

となります。

これはそのままPythonライブラリ、JSON Schema、Web計算ツールへ展開できる構造です。

重要なのは、最終結果だけでなく、

入力
計算式
使用モデル
K値出典
中間値
最終値

を分離して保存することです。

そうすれば、K値の出典を変更した場合でも計算を再実行できます。

まとめ

エルボ、バルブ、継手などによる局所圧力損失は、ΔpL=Kρv22\Delta p_L = K\frac{\rho v^2}{2}

で表せます。

一定径の配管なら、直管損失と合わせて、Δptotal=(fDLD+∑K)ρv22\Delta p_{\mathrm{total}} = \left( f_D\frac{L}{D} + \sum K \right) \frac{\rho v^2}{2}

と整理できます。

ただし、実務上の中心問題は式ではなくK値の選定根拠です。

K値は継手形状や流動条件によって変化し、Reynolds数依存性を持つ場合もあります。NISTの近年の実験でも、その性質が実測されています。

したがって圧力損失計算を自動化するなら、

K値 → 出典 → 適用条件 → 計算結果

までを一組のデータとして扱うことが重要です。

直管損失、Reynolds数、摩擦係数、局所損失を一つの計算チェーンへ統合すれば、配管設計を再利用可能な計算ロジックへ発展させられます。

参考情報

  • U.S. Department of Energy, Fundamentals Handbook: Thermodynamics, Heat Transfer, and Fluid Flow, Volume 3 — 局所損失と等価管長。
  • NIST Technical Note 2206, State-of-the-art Review on Measurement of Pressure Losses of Fluid Flow through Pipe Fittings — 損失係数とReynolds数依存性。
  • NIST Technical Note 2294, Test Facility for Pressure Losses in Plumbing Pipes and Fittings — 配管・継手の圧力損失測定。
  • NIST Technical Note 2342, Measurement and Uncertainty Analysis of Pressure Losses in a Push-to-Connect Elbows and Couplings — 市販継手の実測K値とRe依存性。
参考になったらシェアしてください
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次