L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Données et recherche · SKILL.md

coolprop-db

coolprop-db

Query thermodynamic properties for 100+ fluids from CoolProp database

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: coolprop-db description: "Query thermodynamic properties for 100+ fluids from CoolProp database" category: databases domain: fluids complexity: basic dependencies:

  • CoolProp

CoolProp Database Skill

Query thermodynamic and transport properties for over 100 pure and pseudo-pure fluids using the CoolProp open-source thermophysical property library.

Overview

CoolProp is a comprehensive thermophysical property database that provides:

  • Pure Fluids: Water, air, ammonia, carbon dioxide, and 100+ others
  • Refrigerants: R134a, R410A, R32, R404A, R407C, R507A, and many more
  • Industrial Fluids: Methane, ethane, propane, butane, nitrogen, oxygen, argon
  • Transport Properties: Viscosity, thermal conductivity, surface tension
  • Thermodynamic Properties: Enthalpy, entropy, density, specific heat
  • Phase Information: Saturation properties, two-phase behavior, critical points

CoolProp uses high-accuracy equations of state (Helmholtz energy formulations) and is validated against NIST REFPROP data.

Installation

Python

pip install CoolProp

Verify Installation

import CoolProp
print(CoolProp.__version__)
print(CoolProp.get_global_param_string("version"))

Core API Functions

PropsSI - Primary Property Query Function

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 - Single Input Properties

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

Property Codes (Input/Output Parameters)

Thermodynamic Properties

CodePropertySI UnitDescription
TTemperatureKAbsolute temperature
PPressurePaAbsolute pressure
DDensitykg/m³Mass density
HEnthalpyJ/kgSpecific enthalpy
SEntropyJ/kg/KSpecific entropy
UInternal EnergyJ/kgSpecific internal energy
QQuality-Vapor mass fraction (0-1)
DmolarMolar Densitymol/m³Molar density
HmolarMolar EnthalpyJ/molMolar enthalpy
SmolarMolar EntropyJ/mol/KMolar entropy

Transport Properties

CodePropertySI UnitDescription
VViscosityPa·sDynamic viscosity
LThermal ConductivityW/m/KThermal conductivity
CSpecific Heat (const P)J/kg/KCp at constant pressure
OSpecific Heat (const V)J/kg/KCv at constant volume
PRANDTLPrandtl Number-Pr = μ·Cp/k
ISurface TensionN/mLiquid-vapor interface

Phase Properties

CodePropertySI UnitDescription
PhasePhase Index-0=Liquid, 3=Supercritical, 5=Gas, 6=Two-phase
QQuality-0=Saturated liquid, 1=Saturated vapor

Critical/Triple Point Properties (Use with Props1SI)

CodePropertySI UnitDescription
TcritCritical TemperatureKCritical point temperature
PcritCritical PressurePaCritical point pressure
TtripleTriple Point TempKTriple point temperature
PtripleTriple Point PressPaTriple point pressure
MMolar Masskg/molMolecular weight
ACENTRICAcentric Factor-Pitzer acentric factor

Common Fluids

Water and Air

  • Water - Pure water (H₂O)
  • Air - Dry air (pseudo-pure mixture)

Common Refrigerants

  • R134a - HFC, common in automotive AC
  • R410A - HFC blend, residential AC/heat pumps
  • R32 - HFC, lower GWP alternative
  • R404A - HFC blend, commercial refrigeration
  • R407C - HFC blend, AC systems
  • R507A - HFC blend, low-temperature refrigeration
  • R22 - HCFC (being phased out)
  • R717 - Ammonia (NH₃)
  • R744 - Carbon dioxide (CO₂)

Hydrocarbons

  • Methane, Ethane, Propane, n-Butane, IsoButane
  • n-Pentane, Isopentane, n-Hexane, n-Heptane, n-Octane
  • n-Nonane, n-Decane

Cryogenic Gases

  • Nitrogen, Oxygen, Argon, Helium, Neon, Hydrogen

Industrial Gases

  • CO2 - Carbon dioxide
  • CO - Carbon monoxide
  • H2S - Hydrogen sulfide
  • SO2 - Sulfur dioxide
  • Ammonia - NH₃

Query Examples

Example 1: Water Properties at Standard Conditions

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")

Example 2: Refrigerant Saturation Properties

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")

Example 3: Pressure-Enthalpy (P-H) State Point

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)")

Example 4: Critical and Triple Point Data

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")

Example 5: Viscosity Temperature Dependence

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}")

Example 6: Two-Phase Properties

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³")

Temperature and Pressure Effects

Temperature Ranges

  • Each fluid has valid temperature ranges between triple point and maximum temperature
  • Typical range: Triple point temperature < T < 2000 K (varies by fluid)
  • Check limits using Props1SI('Tmin', fluid) and Props1SI('Tmax', fluid)

Pressure Ranges

  • Each fluid has valid pressure ranges
  • Typical range: Triple point pressure < P < 1000 MPa (varies by fluid)
  • Check limits using Props1SI('pmin', fluid) and Props1SI('pmax', fluid)

Phase Regions

  1. Subcooled Liquid: T < T_sat at given P, or P > P_sat at given T
  2. Two-Phase: T = T_sat and 0 < Q < 1
  3. Superheated Vapor: T > T_sat at given P, or P < P_sat at given T
  4. Supercritical: T > T_crit and P > P_crit

Input Pair Restrictions

Not all input pairs are valid in all regions:

  • (T, P): Valid in single-phase regions only (not in two-phase)
  • (P, Q): Valid for two-phase and saturation (0 ≤ Q ≤ 1)
  • (T, Q): Valid for two-phase and saturation (0 ≤ Q ≤ 1)
  • (P, H): Valid in all regions
  • (P, S): Valid in all regions
  • (H, S): Valid in all regions (useful for isentropic processes)

Error Handling

Common Errors and Solutions

Error: "CoolProp error: [PropsSI] Two saturation inputs are not valid"

  • Problem: Trying to use (T, P) in two-phase region
  • Solution: Use (T, Q) or (P, Q) for two-phase states

Error: "CoolProp error: Value is outside range"

  • Problem: Temperature or pressure outside valid range
  • Solution: Check fluid limits with Props1SI('Tmin', fluid), etc.

Error: "CoolProp error: Fluid not found"

  • Problem: Incorrect fluid name or spelling
  • Solution: Use exact fluid names (case-sensitive), check documentation

Error: "Unable to match the inputs"

  • Problem: Invalid input combination or iteration failed
  • Solution: Check that input values are physically reasonable

Safe Query Pattern

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³")

Engineering Applications

HVAC System Design

  • Refrigerant cycle analysis (evaporator, condenser, compressor, expansion)
  • Heat exchanger calculations
  • Coefficient of performance (COP) calculations

Power Cycles

  • Rankine cycle (steam turbines)
  • Brayton cycle (gas turbines)
  • Organic Rankine Cycle (ORC)

Process Engineering

  • Heat transfer calculations
  • Pipe flow and pressure drop
  • Phase equilibrium
  • Storage tank design

Cryogenic Systems

  • Liquefaction processes
  • Storage and handling
  • Heat leak calculations

References

Official Documentation

Key Papers

  • 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.

Equation of State References

  • 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.

Source Code

Best Practices

  1. Always use SI units for inputs and outputs (K, Pa, J/kg, etc.)
  2. Check phase regions before choosing input pairs
  3. Handle errors gracefully with try-except blocks
  4. Validate ranges before querying (especially temperature and pressure)
  5. Use quality (Q) for two-phase calculations
  6. Cache critical properties if querying multiple times
  7. Use Props1SI for fluid-only properties (critical points, molar mass)
  8. Prefer (P, H) or (P, S) for robust queries across all phase regions

Quick Reference Table

TaskFunctionExample
Two-input propertyPropsSI(output, in1, val1, in2, val2, fluid)PropsSI('D', 'T', 300, 'P', 101325, 'Water')
Single-input propertyProps1SI(param, fluid)Props1SI('Tcrit', 'Water')
Saturation liquidUse Q=0PropsSI('H', 'T', 300, 'Q', 0, 'R134a')
Saturation vaporUse Q=1PropsSI('H', 'T', 300, 'Q', 1, 'R134a')
Two-phaseUse 0<Q<1PropsSI('D', 'P', 500000, 'Q', 0.5, 'R134a')
List all fluidsCoolProp.__fluids__import CoolProp; print(CoolProp.__fluids__)

This skill provides access to one of the most comprehensive open-source thermophysical property databases available, suitable for research, engineering design, and educational applications.

Skills enregistrées