mcpField
C
coolprop-db

coolprop-db

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

coolprop-db について

coolprop-dbは、CoolProp Pythonライブラリで熱力学・輸送物性を調べるスキルです。流体を扱うエンジニア、研究者、学習者向けで、純流体や擬似純流体、冷媒、相挙動を対象とします。

主な機能

  1. 01熱力学物性のクエリ
  2. 02粘度・輸送物性の取得
  3. 03飽和・二相状態の計算
  4. 04臨界点・三重点の物性取得
  5. 05多様な流体タイプに対応

活用シーン

  1. 01冷媒サイクルの分析
  2. 02熱伝達・流動物性の計算
  3. 03動力サイクルの流体状態評価
  4. 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、IsoButane
  • n-Pentane、Isopentane、n-Hexane、n-Heptane、n-Octane
  • n-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) を使って上限と下限を確認します
相領域
  1. 過冷却液体:指定した P で T < T_sat、または指定した T で P > P_sat
  2. 二相:T = T_sat かつ 0 < Q < 1
  3. 過熱蒸気:指定した P で T > T_sat、または指定した T で P < P_sat
  4. 超臨界: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)
プロセスエンジニアリング
  • 熱伝達の計算
  • 配管流れと圧力損失
  • 相平衡
  • 貯蔵タンクの設計
極低温システム
  • 液化プロセス
  • 貯蔵と取り扱い
  • 熱侵入の計算

参考資料

公式ドキュメント
主要な論文
  • 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.
ソースコード

ベストプラクティス

  1. 入力と出力には常にSI単位(K、Pa、J/kgなど)を使用します
  2. 入力の組み合わせを選ぶ前に、相領域を確認します
  3. try-exceptブロックを使用して、エラーを適切に処理します
  4. クエリを実行する前に範囲を検証します(特に温度と圧力)
  5. 二相計算にはクオリティ(Q)を使用します
  6. 複数回クエリする場合は、重要な物性値をキャッシュします
  7. 流体のみの物性値(臨界点、モル質量)にはProps1SIを使用します
  8. すべての相領域で安定したクエリを行うには、(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__)

このスキルを使用すると、利用可能な中でも最も包括的なオープンソースの熱物性データベースのひとつにアクセスできます。研究、エンジニアリング設計、教育用途に適しています。

コメント