nist-refprop について
Pythonラッパーを通じてNIST REFPROPの熱力学・輸送物性を照会するスキルガイドです。基準品質の流体・混合物計算を必要とする技術者や研究者向けで、REFPROPには商用ライセンスが必要です。
主な機能
- 01熱力学物性の照会
- 02輸送物性の計算
- 03純流体と混合物への対応
- 04気液・液液平衡の計算
- 05複数の入力物性ペア
- 06`ctREFPROP`によるPythonアクセス
活用シーン
- 01流体状態のエンタルピーと密度の取得
- 02冷媒混合物の温度グライドの評価
- 03混合物の相平衡計算
- 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 からライセンスを購入する必要があります。
- 標準ライセンス:約300米ドル(買い切り)
- 学術機関向け価格:教育機関向けに提供
- 購入先:https://www.nist.gov/srd/refprop
ライセンスに含まれるもの:
- REFPROP ソフトウェア(Windows GUI)
- 流体データベースファイル
- Excel アドイン
- FORTRAN/DLL ライブラリ
- Python ラッパーとの互換性
重要な注意事項:
- ライセンスはユーザー単位で、永続的です(買い切り)
- 約5年間、アップデートと新しい流体ファイルが提供されます
- 商用アプリケーションではライセンスが必要です
- 再配布は禁止されています
インストール
ステップ1:REFPROP を購入してインストールする
- NIST から REFPROP ライセンスを購入します:https://www.nist.gov/srd/refprop
- REFPROP をダウンロードしてインストールします(通常は
C:\Program Files (x86)\REFPROP\にインストールします) - インストール先のディレクトリパスを控えます
ステップ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(質量単位、上記のデフォルト)
- 英国単位
- カスタム単位
ベストプラクティス
- ctREFPROP をインポートする前に、必ず RPPREFIX を設定してください
- 各呼び出しの後に ierr を確認し、エラーの有無をチェックしてください
- 正確な流体名を使用してください(大文字と小文字を区別します。FLUIDS ディレクトリにある名前を使用してください)
- 混合物の組成を事前に計算してください(合計が 1.0 になる必要があります)
- RP インスタンスをキャッシュしてください - 繰り返し初期化しないでください
- 各相領域に適した入力ペアを使用してください
- 最初に既知の値と照合して結果を検証してください
- エラーメッセージを読んでください - REFPROP は詳細な診断情報を提供します
参考資料
公式リソース
-
NIST REFPROP ウェブサイト
- URL: https://www.nist.gov/srd/refprop
- 購入とダウンロード
-
REFPROP ドキュメント
- インストールに含まれています
- インストールディレクトリ内の
REFPROP.pdf
-
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.
サポート
- NIST サポート:[email protected]
- 課題トラッカー:https://github.com/usnistgov/REFPROP-issues
- フォーラム:https://groups.google.com/g/refprop
クイックリファレンス
# 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 スキルを参照してください。