PICOT

計算検証記録

PICOTの計算結果を、規格式・fluidsライブラリ・手計算という複数の独立した基準と突き合わせて検証した記録です。 使用した式・許容誤差・未検証の領域をすべて開示します。

検証方針

検証には4段階の出典(Tier)を使い分けます。信頼度の高い順に並んでいます。

Tier出典内容
Tier 1規格Annex例題IEC 60534-2-1 / ISO 5167 の附属書に記載された数値例
Tier 2メーカーハンドブックCrane TP-410等、公開されている係数・数値表
Tier 3fluidsライブラリ独立実装のPythonライブラリ「fluids」による計算値
Tier 4手計算基本式から手で導いた期待値(境界値・回帰テスト用)

メーカー製サイジングソフトとの照合は行っていません。PICOTは各社の弁・オリフィス特性を再現するものではなく、公開されている規格式を独自に実装しているためです。

許容誤差

比較にはすべて相対誤差を用います。桁の異なる物理量(PaとMPa、Reが1e6など)を絶対誤差で比較すると、 小さい値の判定が過度に厳しくなるためです。

比較の種類許容誤差備考
単位換算(オフセットなし)1e-12
単位換算(オフセットあり)1e-9ゲージ⇔絶対圧、℃⇔K⇔℉。大気圧・273.15の減算による桁落ち分を見込む
往復変換 A→B→A1e-10
fluidsライブラリ(Tier3)との照合1e-4
規格例題(Tier1)との照合5e-3規格側の記載値が有効数字3〜4桁で丸められている分を見込む
L3クロスチェック(SI⇔Imperial入力の一致)1e-9
IEC規格表のN係数の丸め差3e-3PICOTはIEC規格表のN係数(有効数字3桁)、fluidsは厳密係数を使用。どちらも規格準拠と判定した項目にのみ適用

最終検証日・実行環境

  • 参照値(Tier1・Tier3)の生成日:2026-08-11
  • 参照値の生成環境:Python 3.12.3、fluids 1.3.1
  • 直近のテスト実行:2026-08-13 04:53 UTC (Node.js v20.18.1、Vitest 4.1.10)
  • 結果:全380件中373件成功・7件todo (未検証・未実装のため意図的に保留)

このセクションの件数は、npm testの実行結果から自動生成されます。 生成先はtests/validation-summary.jsonです。 手動での書き換えはしていません。

サマリー

ツールテストケース数検証層未検証・未実装項目
調節弁 Cv計算104件中101件検証済み(todo 3件)L1〜L3配管形状係数FP・レイノルズ数係数FR・複合係数FLPが未実装
オリフィス流量計算77件中74件検証済み(todo 3件)L1〜L3気体の膨張補正・API/AGA-3方式は規格本文の照合待ち(pending-source)
配管圧力損失計算72件中71件検証済み(todo 1件)L1〜L3継手K値の出典照合待ち。遷移域(Re 2300〜4000)は仕様未定義

※ この表は、各ツール固有の計算ロジック検証(基本テスト・L2a〜L3)を対象としています。 3ツール共通の単位換算関数(L1、65件)は対象外とし、 下記「単位換算(L1)」の節で別集計しています。 4-20mA出力計算ツール(25件)は線形補間のみで規格式を実装していないため、対象外です。 計装ループ図DXF生成(37件)は数値計算ではなく図面出力のため、対象外です。 こちらは別途DXF構造検証・座標突き合わせで確認しています。104+77+72+65+25+37=380件で、 ページ冒頭に記載した全体のテスト件数(380件)と一致します。

調節弁 Cv計算(IEC 60534-2-1)

レジームSIImperial混在単位
液体・通常
CV-L-T1-EX1 (T1)
CV-L-T3-NORMAL (T3)
CV-L3-IMP-NORMAL (T4)
CV-L3-MIX-NORMAL (T4)
液体・低差圧
CV-L-T3-LOWDP (T3)
CV-L3-IMP-LOWDP (T4)
液体・キャビテーション
CV-L-T3-HIGHDP (T3)
CV-L2A-CAV-BOUNDARY (T4)
CV-L3-IMP-CAV (T4)
液体・チョーク(フラッシング限界)
CV-L-T3-CHOKED (T3)
CV-L2A-CHOKE-BOUNDARY (T4)
CV-L3-IMP-CHOKED (T4)
液体・フラッシング
CV-L2B-FLASHING (T4)
— ※1
— ※1
液体・高粘度(非乱流)
CV-L-T3-VISCOUS (T3)
既知の仕様差:FR補正未実装(約23%過小評価)
— ※1
— ※1
弁レイノルズ数 Rev
CV-REV-T3-DOC / WATER / VISCOUS / LOWFLOW / FD (T3)
気体・非チョーク
CV-G-T3-NONCHOKED / MIDX / NEARCHOKE (T3)
CV-G-T3-CO2 / HYDROGEN (T3)
CV-L3-IMP-GAS (T4)
CV-L3-MIX-GAS (T4)
気体・チョーク
CV-G-T3-CHOKED (T3)
CV-L2A-Y-BOUNDARY (T4)
— ※1
— ※1
蒸気・非チョーク
CV-S-T3-NONCHOKED / NEARCHOKE (T3)
CV-L3-IMP-STEAM (T4)
蒸気・チョーク
CV-S-T3-CHOKED (T3)
— ※1
— ※1
定義そのもの(Cv=Q[gpm]√(SG/ΔP[psi]))
CV-T1-3〜6
同左
同左

※1 PICOTのUIはImperial入力を単位プルダウンで受けるだけで、計算コアはSI固定です。 Imperial・混在単位のケースは、換算層を通しても物理量が一致するかの確認が目的です。 各レジームに1ペアあれば十分と判断しています。 フラッシング・高粘度(非乱流)・気体チョーク・蒸気チョークの4レジームでは、境界確認を優先しています。 この4レジームでは、Imperial・混在単位ケースを意図的に省略しています。

中間値(L2a)

中間値取得可否詳細ケースID
膨張係数 Y✅ 取得可能CvResult.expansionFactorCV-L2A-Y-*
チョーク判定(x vs Fk·xT)✅ 取得可能CvResult.isChokedCV-L2A-Y-BOUNDARY
FF(液体臨界圧力比係数)✅ 取得可能CvResult.liquidCriticalPressureRatioFactorCV-L2A-FF-* / CV-L2A-FF-DIRECT
ΔP_choke = FL²(P1−FF·Pv)✅ 取得可能CvResult.chokedDeltaPCV-L2A-CHOKE-BOUNDARY / CV-L2A-CHOKE-DIRECT
圧力差比 x/チョーク限界 Fk·xT✅ 取得可能CvResult.pressureDifferentialRatio 等CV-L2A-X-DIRECT
弁レイノルズ数 Rev✅ 取得可能calculateValveReynoldsNumber()CV-REV-*
キャビテーション判定閾値⚠️ 間接的に確認cavitationWarning の反転点を二分探索CV-L2A-CAV-BOUNDARY
FP(配管形状係数)❌ 未実装未実装。利用者入力のFpをそのまま使う
FR による必要Cvの補正❌ 未実装未実装。Revの算出と警告のみ実装済み
FLP / xTP(複合係数)❌ 未実装未実装

オリフィス流量計算(ISO 5167-2 / API MPMS 14.3)

レジームSIImperial混在単位
水・コーナータップ
OR-T3-CORNER-B05 (T3)
OR-L3-IMP-CORNER (T4)
OR-L3-MIX (T4)
水・フランジタップ
OR-T3-FLANGE-B05 (T3)
OR-T3-FLANGE-LOWDP (T3)
OR-L3-IMP-FLANGE (T4)
水・D-D/2タップ
OR-T3-DD2-B05 (T3)
— ※1
β=0.2(推奨下限・境界)
OR-T3-CORNER-B02 (T3)
OR-L2B-BETA-BOUNDARY (T4)
β=0.75(推奨上限・境界)
OR-T3-CORNER-B075 (T3)
低レイノルズ数(ISO適用下限付近)
OR-T3-VISCOUS (T3)
気体(膨張補正あり)
pending-source ※2
API / AGA-3方式
pending-source ※3

※1 Cv計算の節と同じ理由により、水・D-D/2タップのImperialケースは意図的に省略しています。 Imperialは換算層の確認が目的で、各レジーム1ペアあれば十分と判断しています。
※2 fluidsのISO 5167実装は、等エントロピー指数kから膨張係数εを計算します。一方、PICOTのAPI式は上流基準Y1を用いる別式です。 同一条件での比較には規格本文(Tier1)の照合が必要なため、pending-sourceとしています。
※3 API MPMS 14.3の回帰係数はISO 5167と異なり、fluidsに同一実装がありません。規格本文の例題(Tier1)が必要です。

中間値(L2a)

中間値取得可否詳細ケースID
流出係数 C(RHG式の収束値)✅ 取得可能OrificeResult.dischargeCoefficientOR-L2A-C-*
レイノルズ数 Re_D✅ 取得可能OrificeResult.reynoldsNumberOR-L2A-RE-*
β比✅ 取得可能OrificeResult.betaRatioOR-L2A-BETA-*
反復の収束✅ 取得可能OrificeResult.converged / iterationsOR-L2B-CONVERGE-*
膨張係数 ε(気体)❌ 未実装戻り値に含まれない

配管圧力損失計算(Darcy-Weisbach / Colebrook / Crane TP-410)

レジームSIImperial混在単位
層流(Re<2300)
PD-T3-F-LAMINAR (T4)
PD-T3-OIL-LAMINAR (T3)
PD-L3-IMP-LAMINAR (T4)
乱流・平滑管
PD-T3-F-SMOOTH-1E4/1E5/1E7 (T3)
乱流・粗面管
PD-T3-F-ROUGH-1E6 (T3)
PD-L3-IMP-ROUGH (T4)
PD-L3-MIX (T4)
完全粗面域
PD-T3-F-ROUGH-1E8 (T3)
直管全体(水)
PD-T3-WATER-2B / WATER-SMALL (T3)
PD-L3-IMP-WATER (T4)
直管全体(気体)
PD-T3-AIR (T3)
継手あり
PD-L2B-FITTINGS (T4)
遷移域(2300<Re<4000)
仕様未定義 ※4
呼び径テーブルの表示順
PD-L2B-KEY-ORDER / KEY-COVERAGE (T4)

※4 遷移域(2300<Re<4000)は、摩擦係数を一意に定める理論式が存在しません。実装もRe=2300で不連続に切り替わります。 期待値そのものを定義できないため、「不連続であること」自体を記録する回帰テストのみを置いています。

中間値(L2a)

中間値取得可否詳細ケースID
摩擦係数 f✅ 取得可能PressureDropResult.frictionFactorPD-L2A-F-*
レイノルズ数✅ 取得可能PressureDropResult.reynoldsNumberPD-L2A-RE-*
流速✅ 取得可能PressureDropResult.velocityPD-L2A-V-*
層流判定✅ 取得可能PressureDropResult.isLaminarPD-L2B-LAMINAR-BOUNDARY
継手のΣK❌ 未実装戻り値に含まれない(fittingsPressureDropから逆算は可能)PD-L2A-K-*

単位換算(L1・65件)

3ツール共通で使う単位換算関数(圧力・温度・流量・長さ等)を、単独で検証しています。 特定のツールに属さない共通基盤のテストのため、上記サマリーの各ツール件数には含めていません。

観点ケースID備考
定義値照合U-DEF-*inch・psi・atm・℃・cP・US gal(SI定義値との照合)
往復変換U-RT-*全換算関数 × 0近傍・通常値・大値
ゲージ⇔絶対圧U-OFF-P-*kPaG→kPaA、psig→psia、barg→psia(系をまたぐ換算)
温度オフセットU-OFF-T-*℃→K→℉と逆順
ΔTにオフセットを誤適用していないかU-DELTA-TΔT=10℃は10K・18℉になるべき
ΔPにゲージオフセットを誤適用していないかU-DELTA-P差圧に101.325を足していないか
異常系U-ERR-*NaN/Infinity/負の絶対圧

既知の許容差

PICOTとfluidsの計算値がずれるケースについて、判定結果を3種類に分類しています。

内容判定適用
PICOTはIEC規格表の丸めN係数(N1=0.0865, N6=2.73, N8=0.948)、fluidsは厳密係数を使用B(どちらも規格準拠)CORE_VS_FLUIDS_N_ROUNDING = 3e-3 を適用
PICOTの比重基準は水4℃だった解消済み2026-08-11にIEC基準(15.5℃・999.103 kg/m³)へ統一。CV-L3-SG-BASISで回帰テスト
高粘度・低流量域で、fluidsはFR補正を適用するがPICOTは未実装仕様差(既知の未実装項目)比較対象外。乖離量(約23%)をCV-L2B-FR-DEVIATIONで記録

既知の限界・未検証領域

  • オリフィス流量計算:気体の膨張補正、API/AGA-3方式(規格本文の照合待ち・pending-source)
  • 調節弁Cv計算:配管形状係数FP、レイノルズ数係数FR、複合係数FLP/xTP(いずれも未実装)
  • 調節弁Cv計算:FR未実装による必要Cv値の過小評価は、高粘度ケースで最大約23%を確認
  • 配管圧力損失計算:継手K値の出典照合(Crane TP-410本文の照合待ち)
  • 配管圧力損失計算:遷移域(Re 2300〜4000)は摩擦係数の理論式が存在せず、仕様未定義

更新履歴

v0.3.02026-08-11

  • 【重要】Cv計算(簡易式・気体)の単位換算バグを修正
  • Cv計算に弁レイノルズ数Revの判定・警告を追加
  • Cv計算の比重の基準をIEC 60534-2-1に統一
  • 配管圧力損失ページの呼び径プルダウンの並び順を修正
  • 計算結果に中間値を追加

v0.2.02026-08-11

  • 【重要】Cv計算(詳細式・気体/蒸気)のN係数バグを修正
  • 圧力入力を絶対圧・ゲージ圧から選択可能に
  • 入力欄の表示不具合を修正
  • 解説ページを拡充
  • お問い合わせ用メールアドレスを公開

v0.1.02026-07-25

  • 調節弁Cv計算:詳細式・簡易式に対応
  • オリフィス流量計算:ISO 5167・API MPMS 14.3に対応
  • 各計算に単位選択・計算根拠・印刷レイアウトを追加
  • 配管圧力損失計算等の初期リリース

※ 本ページの検証結果は、記載した出典・許容誤差の範囲内での確認です。実設計にあたっては、 採用するメーカーの技術資料・係数を用いた再計算と、有資格者による検証を必ず行ってください。詳しくは免責事項をご確認ください。