mcpField
N
nist-refprop

nist-refprop

github.com/soljournerその他9541 回インストール51 週間前に更新
リポジトリ

nist-refprop について

Pythonラッパーを通じてNIST REFPROPの熱力学・輸送物性を照会するスキルガイドです。基準品質の流体・混合物計算を必要とする技術者や研究者向けで、REFPROPには商用ライセンスが必要です。

主な機能

  1. 01熱力学物性の照会
  2. 02輸送物性の計算
  3. 03純流体と混合物への対応
  4. 04気液・液液平衡の計算
  5. 05複数の入力物性ペア
  6. 06`ctREFPROP`によるPythonアクセス

活用シーン

  1. 01流体状態のエンタルピーと密度の取得
  2. 02冷媒混合物の温度グライドの評価
  3. 03混合物の相平衡計算
  4. 04設計や研究向けの物性データ取得

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/soljourner/claude-engineering-skills --skill nist-refprop

インストール後、Claude Code で/nist-refpropを入力して読み込まれたか確認します。

同梱ファイルexamples.pyreference.md

詳細

NIST REFPROP データベーススキル

NIST REFPROP(Reference Fluid Thermodynamic and Transport Properties)データベースを使用して、高精度の熱力学特性および輸送特性を照会します。REFPROP は、熱物性計算の業界標準です。

概要

NIST REFPROP は、米国国立標準技術研究所(NIST)が開発した業務用グレードの熱物性データベースです。次の機能を提供します。

  • 純粋流体:最高水準の精度を備えた147種類以上の純粋流体
  • 混合物:高度な混合則に対応した既定の混合物およびカスタム混合物
  • 冷媒ブレンド:温度グライドを伴う、一般的な冷媒ブレンドすべて
  • 輸送特性:粘度、熱伝導率、表面張力
  • 熱力学特性:エンタルピー、エントロピー、密度、比熱
  • 相平衡:混合物の VLE、LLE、VLLE 計算
  • 最高水準の精度:実験測定値との照合によって検証された、参照品質のデータ

REFPROP は、次の用途における業界および研究の標準です。

  • 最高水準の精度が求められる重要なエンジニアリング設計
  • 他の物性ライブラリの検証(CoolProp は REFPROP を用いて検証されています)
  • 複雑な相挙動を伴う混合物の計算
  • 温度グライドを伴う冷媒ブレンドの用途
  • 研究および論文品質のデータ

ライセンス

商用ライセンスが必要です

NIST REFPROP は無料でもオープンソースでもありません。NIST からライセンスを購入する必要があります。

ライセンスに含まれるもの:

  • REFPROP ソフトウェア(Windows GUI)
  • 流体データベースファイル
  • Excel アドイン
  • FORTRAN/DLL ライブラリ
  • Python ラッパーとの互換性

重要な注意事項:

  • ライセンスはユーザー単位で、永続的です(買い切り)
  • 約5年間、アップデートと新しい流体ファイルが提供されます
  • 商用アプリケーションではライセンスが必要です
  • 再配布は禁止されています

インストール

ステップ1:REFPROP を購入してインストールする
  1. NIST から REFPROP ライセンスを購入します:https://www.nist.gov/srd/refprop
  2. REFPROP をダウンロードしてインストールします(通常は C:\Program Files (x86)\REFPROP\ にインストールします)
  3. インストール先のディレクトリパスを控えます
ステップ2:Python ラッパーをインストールする
pip install ctREFPROP

ctREFPROP パッケージは、ctypes を使用して REFPROP の Python インターフェースを提供します。

ステップ3:RPPREFIX 環境変数を設定する

Python ラッパーが REFPROP のインストール先を認識できるようにする必要があります。

Windows:

# PowerShell
$env:RPPREFIX = "C:\Program Files (x86)\REFPROP\"

# Or set permanently via System Properties > Environment Variables

Linux/Mac:

export RPPREFIX="/path/to/REFPROP/"

Python(別の方法):

import os
os.environ['RPPREFIX'] = r'C:\Program Files (x86)\REFPROP'
ステップ4:インストールを確認する
from ctREFPROP.ctREFPROP import REFPROPFunctionLibrary

# Initialize REFPROP
RP = REFPROPFunctionLibrary(os.environ['RPPREFIX'])
RP.SETPATHdll(os.environ['RPPREFIX'])

# Test query
print(RP.RPVersion())

利用可能な流体

REFPROP には、クラス別に分類された147種類以上の純粋流体が含まれています。

一般的な工業用流体
  • 水(H₂O)- IAPWS-95 の定式化
  • 空気 - 乾燥空気の混合物
  • 二酸化炭素(CO₂)
  • 窒素(N₂)
  • 酸素(O₂)
  • アルゴン(Ar)
  • ヘリウム(He)
  • 水素(H₂)
炭化水素(40種類以上)
  • アルカン:メタン、エタン、プロパン、ブタン、ペンタン、ヘキサン、ヘプタン、オクタン、ノナン、デカン(異性体を含む)
  • アルケン:エチレン、プロピレン、ブテン
  • 芳香族化合物:ベンゼン、トルエン、キシレン
  • 環状化合物:シクロヘキサン、シクロペンタン
冷媒(60種類以上)
  • CFC:R11、R12、R13、R113、R114、R115
  • HCFC:R22、R123、R124、R141b、R142b
  • HFC:R23、R32、R125、R134a、R143a、R152a、R227ea、R236fa、R245fa、R365mfc
  • HFO:R1234yf、R1234ze(E)、R1233zd(E)、R1336mzz(Z)
  • 自然冷媒:R717(アンモニア)、R744(CO₂)、R290(プロパン)、R600a(イソブタン)
  • ブレンド:R404A、R407C、R410A、R507A、R407F、R448A、R449A、R450A、R513A
極低温流体
  • ヘリウム、ネオン、アルゴン、クリプトン、キセノン
  • 水素、重水素、パラ水素
  • 窒素、酸素、フッ素
  • メタン、エタン(LNG の成分)
特殊流体
  • シロキサン:D4、D5、D6、MD2M、MD3M、MD4M、MDM、MM(ORC 用途)
  • アルコール:メタノール、エタノール、プロパノール、ブタノール
  • その他の有機化合物:アセトン、ベンゼン、トルエン
  • 無機化合物:アンモニア、二酸化硫黄、硫化水素

流体の完全な一覧については、reference.md を参照してください。

物性の照会

主な機能

REFPROPでは、CoolPropとは異なる関数呼び出しを使用します。

from ctREFPROP.ctREFPROP import REFPROPFunctionLibrary
import os

# Initialize
RP = REFPROPFunctionLibrary(os.environ['RPPREFIX'])
RP.SETPATHdll(os.environ['RPPREFIX'])

# Define fluid
MOLAR_BASE_SI = RP.GETENUMdll(0, "MOLAR BASE SI").iEnum
fluid = "WATER"

# Single component
r = RP.REFPROPdll(fluid, "TP", "D;H;S;CP;CV;W;VIS;TCX", MOLAR_BASE_SI, 0, 0, 298.15, 101.325, [1.0])

# Access results
density = r.Output[0]      # kg/m³
enthalpy = r.Output[1]     # J/kg
entropy = r.Output[2]      # J/kg/K
cp = r.Output[3]           # J/kg/K
cv = r.Output[4]           # J/kg/K
sound_speed = r.Output[5]  # m/s
viscosity = r.Output[6]    # Pa·s
conductivity = r.Output[7] # W/m/K
入力仕様
コード物性単位
TP温度、圧力K、kPa
TH温度、エンタルピーK、J/kg
TS温度、エントロピーK、J/kg/K
TD温度、密度K、kg/m³
PH圧力、エンタルピーkPa、J/kg
PS圧力、エントロピーkPa、J/kg/K
PD圧力、密度kPa、kg/m³
TQ温度、クオリティK、-
PQ圧力、クオリティkPa、-
出力物性
コード物性単位
D密度kg/m³
HエンタルピーJ/kg
SエントロピーJ/kg/K
U内部エネルギーJ/kg
CP熱容量(定圧)J/kg/K
CV熱容量(定積)J/kg/K
W音速m/s
VIS粘度Pa·s
TCX熱伝導率W/m/K
KV動粘度m²/s
PRANDTLプラントル数-
STN表面張力N/m
P圧力kPa
T温度K
Qクオリティ(蒸気割合)-

1回の呼び出しで、複数の物性をセミコロン区切りで指定できます:"D;H;S;CP;VIS;TCX"

混合物の計算

REFPROPの大きな強みの1つは、高度な混合物処理機能です。

# Define mixture by components and mole fractions
fluid = "METHANE;ETHANE;PROPANE"
z = [0.9, 0.07, 0.03]  # Mole fractions (must sum to 1.0)

# Query mixture properties
r = RP.REFPROPdll(fluid, "TP", "D;H;S", MOLAR_BASE_SI, 0, 0, 250.0, 5000.0, z)

混合物の機能:

  • 混合物に最大20成分を指定可能
  • 高度な混合則(GERG-2008、Kunz-Wagnerなど)
  • ゼオトロープ混合物の温度グライド計算
  • 気液平衡(VLE)計算
  • 一部の系での液液平衡(LLE)計算

CoolPropに対する利点

CoolPropは優れた無料のライブラリですが、REFPROPには次の利点があります。

1. より高い精度
  • REFPROPは、ほかのライブラリが検証に使用する基準標準です
  • 特に臨界点付近で、より精密な状態方程式を使用します
  • 輸送物性の相関式がより優れています
  • 代表的な精度:密度は0.01%、CoolPropは0.1%
2. より多くの流体
  • 純物質が147種類以上(CoolPropは約120種類)
  • 最新の冷媒をすべて網羅(HFO:R1234yf、R1234ze、R1233zdなど)
  • 工業用および特殊化学物質をより多く収録
  • 新しい流体を頻繁に追加
3. 優れた混合物処理
  • より優れた混合則(GERG-2008、高度なモデル)
  • 複雑な非理想混合物を処理
  • ゼオトロープ冷媒混合物の温度グライドに対応
  • VLE/LLE計算
  • 最大20成分に対応(CoolPropの混合物対応は限定的)
4. より広い物性範囲
  • より広い温度・圧力範囲で有効
  • 外挿時の挙動がより優れています
  • 極端な条件でも、より信頼性の高い結果が得られます
5. 追加機能
  • 湿度計算(湿り空気計算)
  • フラッシュ計算(PT、PH、PSなど)
  • ヤコビアンを用いた飽和物性計算
  • 補助方程式
  • 擬似純物質流体の近似
6. 公式サポート
  • NIST(米国国立標準技術研究所)が保守
  • 技術サポートを利用可能
  • 最新の研究成果を反映した定期的な更新
  • 論文掲載に適した品質の結果
REFPROPとCoolPropの使い分け

次の場合はREFPROPを使用してください:

  • 最高精度が必要な場合(±0.01%)
  • 複雑な混合物を扱う場合
  • 最新の冷媒データ(HFO)が必要な場合
  • 論文執筆や重要な設計作業の場合
  • 商用ライセンスの予算がある場合
  • ゼオトロープ混合物(温度グライド)を扱う場合

次の場合はCoolPropを使用してください:

  • 予算に制約がある場合(無料/オープンソース)
  • 基本的な物性値が必要な場合(±0.1%の精度で許容できる場合)
  • 純物質のみを扱う場合
  • オープンソースライセンスが必要な場合
  • 迅速なプロトタイピングを行う場合

検証に関する注記: CoolPropはREFPROPを基準に検証されており、REFPROPが基準標準であることを確認できます。

一般的なワークフローの例

from ctREFPROP.ctREFPROP import REFPROPFunctionLibrary
import os

# Setup
os.environ['RPPREFIX'] = r'C:\Program Files (x86)\REFPROP'
RP = REFPROPFunctionLibrary(os.environ['RPPREFIX'])
RP.SETPATHdll(os.environ['RPPREFIX'])

MOLAR_BASE_SI = RP.GETENUMdll(0, "MOLAR BASE SI").iEnum

# Query water at 25°C, 1 bar
fluid = "WATER"
T = 298.15  # K
P = 100.0   # kPa

r = RP.REFPROPdll(fluid, "TP", "D;H;S;CP;VIS;TCX", MOLAR_BASE_SI, 0, 0, T, P, [1.0])

print(f"Water at {T} K, {P} kPa:")
print(f"  Density: {r.Output[0]:.4f} kg/m³")
print(f"  Enthalpy: {r.Output[1]:.2f} J/kg")
print(f"  Entropy: {r.Output[2]:.2f} J/kg/K")
print(f"  Cp: {r.Output[3]:.2f} J/kg/K")
print(f"  Viscosity: {r.Output[4]*1000:.4f} mPa·s")
print(f"  Conductivity: {r.Output[5]:.4f} W/m/K")

エラー処理

REFPROPはエラーコードとメッセージを返します。

r = RP.REFPROPdll(fluid, "TP", "D", MOLAR_BASE_SI, 0, 0, T, P, z)

if r.ierr > 0:
    print(f"Error {r.ierr}: {r.herr}")
elif r.ierr < 0:
    print(f"Warning {r.ierr}: {r.herr}")
else:
    print(f"Success: {r.Output[0]}")

単位

REFPROP では CoolProp とは異なる単位規約が使用されます。

デフォルトの単位(MOLAR BASE SI の場合):

  • 温度:K(ケルビン)
  • 圧力:kPa(キロパスカル) - 注:CoolProp では Pa が使用されます
  • 密度:kg/m³
  • エンタルピー:J/kg
  • エントロピー:J/kg/K
  • 粘度:Pa·s
  • 熱伝導率:W/m/K

利用可能な単位系:

  • SI(モル単位)
  • SI(質量単位、上記のデフォルト)
  • 英国単位
  • カスタム単位

ベストプラクティス

  1. ctREFPROP をインポートする前に、必ず RPPREFIX を設定してください
  2. 各呼び出しの後に ierr を確認し、エラーの有無をチェックしてください
  3. 正確な流体名を使用してください(大文字と小文字を区別します。FLUIDS ディレクトリにある名前を使用してください)
  4. 混合物の組成を事前に計算してください(合計が 1.0 になる必要があります)
  5. RP インスタンスをキャッシュしてください - 繰り返し初期化しないでください
  6. 各相領域に適した入力ペアを使用してください
  7. 最初に既知の値と照合して結果を検証してください
  8. エラーメッセージを読んでください - REFPROP は詳細な診断情報を提供します

参考資料

公式リソース
  1. NIST REFPROP ウェブサイト

  2. REFPROP ドキュメント

    • インストールに含まれています
    • インストールディレクトリ内の REFPROP.pdf
  3. ctREFPROP ドキュメント

主な論文
  • Lemmon, E.W., Bell, I.H., Huber, M.L., McLinden, M.O. (2018). "NIST Standard Reference Database 23: Reference Fluid Thermodynamic and Transport Properties-REFPROP, Version 10.0", National Institute of Standards and Technology.
サポート

クイックリファレンス

# Initialize
from ctREFPROP.ctREFPROP import REFPROPFunctionLibrary
RP = REFPROPFunctionLibrary(os.environ['RPPREFIX'])
RP.SETPATHdll(os.environ['RPPREFIX'])
MOLAR_BASE_SI = RP.GETENUMdll(0, "MOLAR BASE SI").iEnum

# Pure fluid
r = RP.REFPROPdll("WATER", "TP", "D;H;S", MOLAR_BASE_SI, 0, 0, 300.0, 101.325, [1.0])

# Mixture
r = RP.REFPROPdll("METHANE;ETHANE", "TP", "D;H;S", MOLAR_BASE_SI, 0, 0, 200.0, 5000.0, [0.9, 0.1])

# Check for errors
if r.ierr != 0:
    print(f"Error/Warning: {r.herr}")

NIST REFPROP は、熱物性値のゴールドスタンダードです。商用ライセンスが必要ですが、最高の精度、混合物の計算、または出版物に掲載できる品質の結果が求められる用途では、その投資に見合う価値があります。オープンソースの代替手段については、coolprop-db スキルを参照してください。

コメント