coolprop-db について
coolprop-dbは、CoolProp Pythonライブラリで熱力学・輸送物性を調べるスキルです。流体を扱うエンジニア、研究者、学習者向けで、純流体や擬似純流体、冷媒、相挙動を対象とします。
主な機能
- 01熱力学物性のクエリ
- 02粘度・輸送物性の取得
- 03飽和・二相状態の計算
- 04臨界点・三重点の物性取得
- 05多様な流体タイプに対応
活用シーン
- 01冷媒サイクルの分析
- 02熱伝達・流動物性の計算
- 03動力サイクルの流体状態評価
- 04極低温流体の物性確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ soljourner/ claude-engineering-skills --skill coolprop-dbインストール後、Claude Code で/coolprop-dbを入力して読み込まれたか確認します。
同梱ファイルexamples.pyreference.md
詳細
CoolProp データベーススキル
CoolProp オープンソース熱物性ライブラリを使用して、100 種類を超える純流体および疑似純流体の熱力学的特性と輸送特性を照会します。
概要
CoolProp は、次の情報を提供する包括的な熱物性データベースです。
- 純流体:水、空気、アンモニア、二酸化炭素など、100 種類以上
- 冷媒:R134a、R410A、R32、R404A、R407C、R507A など多数
- 工業用流体:メタン、エタン、プロパン、ブタン、窒素、酸素、アルゴン
- 輸送特性:粘度、熱伝導率、表面張力
- 熱力学的特性:エンタルピー、エントロピー、密度、比熱
- 相情報:飽和特性、気液二相挙動、臨界点
CoolProp は高精度の状態方程式(ヘルムホルツエネルギー定式化)を使用しており、NIST REFPROP のデータと照合されています。
インストール
Python
pip install CoolProp
インストールの確認
import CoolProp
print(CoolProp.__version__)
print(CoolProp.get_global_param_string("version"))
コア API 関数
PropsSI - 主な物性値照会関数
from CoolProp.CoolProp import PropsSI
# Syntax: PropsSI(output, input1_name, input1_value, input2_name, input2_value, fluid)
value = PropsSI('D', 'T', 298.15, 'P', 101325, 'Water')
Props1SI - 単一入力の物性値
from CoolProp.CoolProp import Props1SI
# For properties requiring only fluid name
T_crit = Props1SI('Tcrit', 'Water') # Critical temperature
P_crit = Props1SI('Pcrit', 'Water') # Critical pressure
物性コード(入力/出力パラメーター)
熱力学的特性
| コード | 物性 | SI 単位 | 説明 |
|---|---|---|---|
T | 温度 | K | 絶対温度 |
P | 圧力 | Pa | 絶対圧力 |
D | 密度 | kg/m³ | 質量密度 |
H | エンタルピー | J/kg | 比エンタルピー |
S | エントロピー | J/kg/K | 比エントロピー |
U | 内部エネルギー | J/kg | 比内部エネルギー |
Q | クオリティ | - | 蒸気の質量分率(0~1) |
Dmolar | モル密度 | mol/m³ | モル密度 |
Hmolar | モルエンタルピー | J/mol | モルエンタルピー |
Smolar | モルエントロピー | J/mol/K | モルエントロピー |
輸送特性
| コード | 物性 | SI 単位 | 説明 |
|---|---|---|---|
V | 粘度 | Pa·s | 動粘度 |
L | 熱伝導率 | W/m/K | 熱伝導率 |
C | 比熱(定圧) | J/kg/K | 定圧比熱 Cp |
O | 比熱(定積) | J/kg/K | 定積比熱 Cv |
PRANDTL | プラントル数 | - | Pr = μ·Cp/k |
I | 表面張力 | N/m | 液体と蒸気の界面 |
相特性
| コード | 物性 | SI 単位 | 説明 |
|---|---|---|---|
Phase | 相インデックス | - | 0=液体、3=超臨界、5=気体、6=気液二相 |
Q | クオリティ | - | 0=飽和液、1=飽和蒸気 |
臨界点/三重点の特性(Props1SI と併用)
| コード | 物性 | SI 単位 | 説明 |
|---|---|---|---|
Tcrit | 臨界温度 | K | 臨界点の温度 |
Pcrit | 臨界圧力 | Pa | 臨界点の圧力 |
Ttriple | 三重点温度 | K | 三重点の温度 |
Ptriple | 三重点圧力 | Pa | 三重点の圧力 |
M | モル質量 | kg/mol | 分子量 |
ACENTRIC | 非中心因子 | - | ピッツァー非中心因子 |
一般的な流体
水と空気
Water- 純水(H₂O)Air- 乾燥空気(疑似純混合物)
一般的な冷媒
R134a- HFC、自動車用エアコンで一般的R410A- HFC 混合冷媒、家庭用エアコン/ヒートポンプR32- HFC、GWP の低い代替冷媒R404A- HFC 混合冷媒、業務用冷凍機器R407C- HFC 混合冷媒、エアコンシステムR507A- HFC 混合冷媒、低温冷凍R22- HCFC(段階的に廃止中)R717- アンモニア(NH₃)R744- 二酸化炭素(CO₂)
炭化水素
Methane、Ethane、Propane、n-Butane、IsoButanen-Pentane、Isopentane、n-Hexane、n-Heptane、n-Octanen-Nonane、n-Decane
低温ガス
Nitrogen、Oxygen、Argon、Helium、Neon、Hydrogen
工業用ガス
CO2- 二酸化炭素CO- 一酸化炭素H2S- 硫化水素SO2- 二酸化硫黄Ammonia- NH₃
照会例
例 1:標準条件での水の特性
from CoolProp.CoolProp import PropsSI
# Water at 25°C (298.15 K) and 1 atm (101325 Pa)
T = 298.15 # K
P = 101325 # Pa
density = PropsSI('D', 'T', T, 'P', P, 'Water') # kg/m³
enthalpy = PropsSI('H', 'T', T, 'P', P, 'Water') # J/kg
entropy = PropsSI('S', 'T', T, 'P', P, 'Water') # J/kg/K
viscosity = PropsSI('V', 'T', T, 'P', P, 'Water') # Pa·s
cp = PropsSI('C', 'T', T, 'P', P, 'Water') # J/kg/K
print(f"Water at {T-273.15}°C and {P/1000:.1f} kPa:")
print(f" Density: {density:.2f} kg/m³")
print(f" Enthalpy: {enthalpy/1000:.2f} kJ/kg")
print(f" Entropy: {entropy/1000:.4f} kJ/kg·K")
print(f" Viscosity: {viscosity*1000:.4f} mPa·s")
print(f" Cp: {cp/1000:.4f} kJ/kg·K")
例 2:冷媒の飽和特性
from CoolProp.CoolProp import PropsSI
# R134a saturation properties at 25°C
T_sat = 298.15 # K
fluid = 'R134a'
# Get saturation pressure at this temperature
P_sat = PropsSI('P', 'T', T_sat, 'Q', 0, fluid) # Pa
# Saturated liquid properties (Q=0)
rho_liquid = PropsSI('D', 'T', T_sat, 'Q', 0, fluid)
h_liquid = PropsSI('H', 'T', T_sat, 'Q', 0, fluid)
s_liquid = PropsSI('S', 'T', T_sat, 'Q', 0, fluid)
# Saturated vapor properties (Q=1)
rho_vapor = PropsSI('D', 'T', T_sat, 'Q', 1, fluid)
h_vapor = PropsSI('H', 'T', T_sat, 'Q', 1, fluid)
s_vapor = PropsSI('S', 'T', T_sat, 'Q', 1, fluid)
# Latent heat
h_fg = h_vapor - h_liquid
print(f"{fluid} at {T_sat-273.15}°C:")
print(f" Saturation pressure: {P_sat/1000:.2f} kPa")
print(f" Liquid density: {rho_liquid:.2f} kg/m³")
print(f" Vapor density: {rho_vapor:.2f} kg/m³")
print(f" Latent heat: {h_fg/1000:.2f} kJ/kg")
例3:圧力-エンタルピー(P-H)状態点
from CoolProp.CoolProp import PropsSI
# Find temperature at known pressure and enthalpy
P = 500000 # 5 bar = 500 kPa
h = 250000 # 250 kJ/kg
T = PropsSI('T', 'P', P, 'H', h, 'R134a')
Q = PropsSI('Q', 'P', P, 'H', h, 'R134a')
print(f"R134a at {P/1000:.0f} kPa and {h/1000:.0f} kJ/kg:")
print(f" Temperature: {T-273.15:.2f}°C")
print(f" Quality: {Q:.4f} (0=liquid, 1=vapor)")
例4:臨界点と三重点のデータ
from CoolProp.CoolProp import Props1SI
fluids = ['Water', 'CO2', 'Nitrogen', 'R134a']
for fluid in fluids:
T_crit = Props1SI('Tcrit', fluid)
P_crit = Props1SI('Pcrit', fluid)
T_triple = Props1SI('Ttriple', fluid)
M = Props1SI('M', fluid)
print(f"\n{fluid}:")
print(f" Critical point: {T_crit-273.15:.2f}°C, {P_crit/1e6:.2f} MPa")
print(f" Triple point: {T_triple-273.15:.2f}°C")
print(f" Molar mass: {M*1000:.2f} g/mol")
例5:粘度の温度依存性
from CoolProp.CoolProp import PropsSI
import numpy as np
# Calculate water viscosity from 0°C to 100°C at atmospheric pressure
P = 101325 # Pa
temperatures = np.linspace(273.15, 373.15, 11) # 0 to 100°C
print("Water viscosity vs temperature:")
print("T(°C) μ(mPa·s)")
for T in temperatures:
mu = PropsSI('V', 'T', T, 'P', P, 'Water') * 1000 # Convert to mPa·s
print(f"{T-273.15:5.0f} {mu:.4f}")
例6:二相の物性値
from CoolProp.CoolProp import PropsSI
# R134a at 10 bar with 50% quality
P = 1000000 # 10 bar = 1 MPa
Q = 0.5 # 50% vapor
T = PropsSI('T', 'P', P, 'Q', Q, 'R134a')
h = PropsSI('H', 'P', P, 'Q', Q, 'R134a')
s = PropsSI('S', 'P', P, 'Q', Q, 'R134a')
rho = PropsSI('D', 'P', P, 'Q', Q, 'R134a')
print(f"R134a two-phase at {P/1e6:.1f} MPa, quality = {Q}:")
print(f" Temperature: {T-273.15:.2f}°C")
print(f" Enthalpy: {h/1000:.2f} kJ/kg")
print(f" Entropy: {s/1000:.4f} kJ/kg·K")
print(f" Density: {rho:.2f} kg/m³")
温度と圧力の影響
温度範囲
- 各流体の有効な温度範囲は、三重点から最高温度までです
- 一般的な範囲:三重点温度 < T < 2000 K(流体によって異なります)
Props1SI('Tmin', fluid)とProps1SI('Tmax', fluid)を使って上限と下限を確認します
圧力範囲
- 各流体の有効な圧力範囲は異なります
- 一般的な範囲:三重点圧力 < P < 1000 MPa(流体によって異なります)
Props1SI('pmin', fluid)とProps1SI('pmax', fluid)を使って上限と下限を確認します
相領域
- 過冷却液体:指定した P で T < T_sat、または指定した T で P > P_sat
- 二相:T = T_sat かつ 0 < Q < 1
- 過熱蒸気:指定した P で T > T_sat、または指定した T で P < P_sat
- 超臨界:T > T_crit かつ P > P_crit
入力ペアの制約
すべての入力ペアが、すべての領域で有効なわけではありません。
- (T, P):単相領域でのみ有効(二相領域では無効)
- (P, Q):二相および飽和状態で有効(0 ≤ Q ≤ 1)
- (T, Q):二相および飽和状態で有効(0 ≤ Q ≤ 1)
- (P, H):すべての領域で有効
- (P, S):すべての領域で有効
- (H, S):すべての領域で有効(等エントロピー過程に便利)
エラー処理
よくあるエラーと解決策
エラー:「CoolProp error: [PropsSI] Two saturation inputs are not valid」
- 問題:二相領域で (T, P) を使用しようとしています
- 解決策:二相状態には (T, Q) または (P, Q) を使用します
エラー:「CoolProp error: Value is outside range」
- 問題:温度または圧力が有効範囲外です
- 解決策:Props1SI('Tmin', fluid) などを使って、流体の上限と下限を確認します
エラー:「CoolProp error: Fluid not found」
- 問題:流体名が正しくないか、スペルが間違っています
- 解決策:正確な流体名を使用し(大文字と小文字を区別します)、ドキュメントを確認します
エラー:「Unable to match the inputs」
- 問題:入力の組み合わせが無効か、反復計算に失敗しました
- 解決策:入力値が物理的に妥当であることを確認します
安全なクエリのパターン
from CoolProp.CoolProp import PropsSI
def safe_props(output, input1, value1, input2, value2, fluid):
"""Query CoolProp with error handling"""
try:
result = PropsSI(output, input1, value1, input2, value2, fluid)
return result
except ValueError as e:
print(f"Error querying {fluid}: {e}")
return None
except Exception as e:
print(f"Unexpected error: {e}")
return None
# Usage
density = safe_props('D', 'T', 300, 'P', 101325, 'Water')
if density is not None:
print(f"Density: {density:.2f} kg/m³")
エンジニアリングでの用途
HVAC システム設計
- 冷媒サイクルの解析(蒸発器、凝縮器、圧縮機、膨張)
- 熱交換器の計算
- 成績係数(COP)の計算
動力サイクル
- ランキンサイクル(蒸気タービン)
- ブレイトンサイクル(ガスタービン)
- 有機ランキンサイクル(ORC)
プロセスエンジニアリング
- 熱伝達の計算
- 配管流れと圧力損失
- 相平衡
- 貯蔵タンクの設計
極低温システム
- 液化プロセス
- 貯蔵と取り扱い
- 熱侵入の計算
参考資料
公式ドキュメント
- CoolProp ウェブサイト:http://www.coolprop.org/
- Python ドキュメント:http://www.coolprop.org/coolprop/HighLevelAPI.html
- 流体の物性値:http://www.coolprop.org/fluid_properties/PurePseudoPure.html
- 検証データ:http://www.coolprop.org/validation/index.html
主要な論文
- Bell, I. H., Wronski, J., Quoilin, S., & Lemort, V. (2014). "Pure and Pseudo-pure Fluid Thermophysical Property Evaluation and the Open-Source Thermophysical Property Library CoolProp." Industrial & Engineering Chemistry Research, 53(6), 2498-2508.
状態方程式の参考資料
- Lemmon, E. W., Huber, M. L., & McLinden, M. O. (2013). NIST Standard Reference Database 23: Reference Fluid Thermodynamic and Transport Properties (REFPROP), Version 9.1. National Institute of Standards and Technology.
ソースコード
ベストプラクティス
- 入力と出力には常にSI単位(K、Pa、J/kgなど)を使用します
- 入力の組み合わせを選ぶ前に、相領域を確認します
- try-exceptブロックを使用して、エラーを適切に処理します
- クエリを実行する前に範囲を検証します(特に温度と圧力)
- 二相計算にはクオリティ(Q)を使用します
- 複数回クエリする場合は、重要な物性値をキャッシュします
- 流体のみの物性値(臨界点、モル質量)には
Props1SIを使用します - すべての相領域で安定したクエリを行うには、(P, H)または(P, S)を優先します
クイックリファレンステーブル
| タスク | 関数 | 例 |
|---|---|---|
| 2入力の物性値 | PropsSI(output, in1, val1, in2, val2, fluid) | PropsSI('D', 'T', 300, 'P', 101325, 'Water') |
| 1入力の物性値 | Props1SI(param, fluid) | Props1SI('Tcrit', 'Water') |
| 飽和液 | Q=0を使用 | PropsSI('H', 'T', 300, 'Q', 0, 'R134a') |
| 飽和蒸気 | Q=1を使用 | PropsSI('H', 'T', 300, 'Q', 1, 'R134a') |
| 二相 | 0<Q<1を使用 | PropsSI('D', 'P', 500000, 'Q', 0.5, 'R134a') |
| すべての流体を一覧表示 | CoolProp.__fluids__ | import CoolProp; print(CoolProp.__fluids__) |
このスキルを使用すると、利用可能な中でも最も包括的なオープンソースの熱物性データベースのひとつにアクセスできます。研究、エンジニアリング設計、教育用途に適しています。
コメント
Markdown 対応