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

nist-refprop

nist-refprop

Query high-accuracy thermodynamic properties from NIST REFPROP database (commercial)

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: nist-refprop description: "Query high-accuracy thermodynamic properties from NIST REFPROP database (commercial)" category: databases domain: fluids complexity: intermediate dependencies:

  • ctREFPROP

NIST REFPROP Database Skill

Query high-accuracy thermodynamic and transport properties using the NIST REFPROP (Reference Fluid Thermodynamic and Transport Properties) database - the gold standard for thermophysical property calculations.

Overview

NIST REFPROP is a commercial-grade thermophysical property database developed by the National Institute of Standards and Technology (NIST). It provides:

  • Pure Fluids: 147+ pure fluids with the highest available accuracy
  • Mixtures: Predefined and custom mixtures with advanced mixing rules
  • Refrigerant Blends: All common refrigerant blends with temperature glide
  • Transport Properties: Viscosity, thermal conductivity, surface tension
  • Thermodynamic Properties: Enthalpy, entropy, density, specific heat
  • Phase Equilibrium: VLE, LLE, VLLE calculations for mixtures
  • Highest Accuracy: Reference-quality data validated against experimental measurements

REFPROP is the industry and research standard for:

  • Critical engineering design requiring highest accuracy
  • Validation of other property libraries (CoolProp is validated against REFPROP)
  • Mixture calculations with complex phase behavior
  • Refrigerant blend applications with temperature glide
  • Research and publication-quality data

Licensing

COMMERCIAL LICENSE REQUIRED

NIST REFPROP is NOT free or open-source software. You must purchase a license from NIST:

License includes:

  • REFPROP software (Windows GUI)
  • Fluid database files
  • Excel add-in
  • FORTRAN/DLL libraries
  • Python wrapper compatibility

Important Notes:

  • License is per-user, perpetual (one-time fee)
  • Updates and new fluid files provided for ~5 years
  • Required for commercial applications
  • Cannot be redistributed

Installation

Step 1: Purchase and Install REFPROP

  1. Purchase REFPROP license from NIST: https://www.nist.gov/srd/refprop
  2. Download and install REFPROP (typically to C:\Program Files (x86)\REFPROP\)
  3. Note the installation directory path

Step 2: Install Python Wrapper

pip install ctREFPROP

The ctREFPROP package provides a Python interface to REFPROP using ctypes.

Step 3: Set RPPREFIX Environment Variable

The Python wrapper needs to know where REFPROP is installed:

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 (alternative):

import os
os.environ['RPPREFIX'] = r'C:\Program Files (x86)\REFPROP'

Step 4: Verify Installation

from ctREFPROP.ctREFPROP import REFPROPFunctionLibrary

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

# Test query
print(RP.RPVersion())

Available Fluids

REFPROP includes 147+ pure fluids organized by class:

Common Industrial Fluids

  • Water (H₂O) - IAPWS-95 formulation
  • Air - Dry air mixture
  • Carbon Dioxide (CO₂)
  • Nitrogen (N₂)
  • Oxygen (O₂)
  • Argon (Ar)
  • Helium (He)
  • Hydrogen (H₂)

Hydrocarbons (40+ fluids)

  • Alkanes: Methane, Ethane, Propane, Butane, Pentane, Hexane, Heptane, Octane, Nonane, Decane (and isomers)
  • Alkenes: Ethylene, Propylene, Butene
  • Aromatics: Benzene, Toluene, Xylenes
  • Cyclic: Cyclohexane, Cyclopentane

Refrigerants (60+ fluids)

  • CFCs: R11, R12, R13, R113, R114, R115
  • HCFCs: R22, R123, R124, R141b, R142b
  • HFCs: R23, R32, R125, R134a, R143a, R152a, R227ea, R236fa, R245fa, R365mfc
  • HFOs: R1234yf, R1234ze(E), R1233zd(E), R1336mzz(Z)
  • Natural: R717 (Ammonia), R744 (CO₂), R290 (Propane), R600a (Isobutane)
  • Blends: R404A, R407C, R410A, R507A, R407F, R448A, R449A, R450A, R513A

Cryogenic Fluids

  • Helium, Neon, Argon, Krypton, Xenon
  • Hydrogen, Deuterium, Parahydrogen
  • Nitrogen, Oxygen, Fluorine
  • Methane, Ethane (LNG components)

Specialty Fluids

  • Siloxanes: D4, D5, D6, MD2M, MD3M, MD4M, MDM, MM (ORC applications)
  • Alcohols: Methanol, Ethanol, Propanol, Butanol
  • Other Organics: Acetone, Benzene, Toluene
  • Inorganics: Ammonia, Sulfur dioxide, Hydrogen sulfide

See reference.md for complete fluid list.

Property Queries

Core Functions

REFPROP uses different function calls than 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

Input Specifications

CodePropertyUnit
TPTemperature, PressureK, kPa
THTemperature, EnthalpyK, J/kg
TSTemperature, EntropyK, J/kg/K
TDTemperature, DensityK, kg/m³
PHPressure, EnthalpykPa, J/kg
PSPressure, EntropykPa, J/kg/K
PDPressure, DensitykPa, kg/m³
TQTemperature, QualityK, -
PQPressure, QualitykPa, -

Output Properties

CodePropertyUnit
DDensitykg/m³
HEnthalpyJ/kg
SEntropyJ/kg/K
UInternal energyJ/kg
CPHeat capacity (const P)J/kg/K
CVHeat capacity (const V)J/kg/K
WSpeed of soundm/s
VISViscosityPa·s
TCXThermal conductivityW/m/K
KVKinematic viscositym²/s
PRANDTLPrandtl number-
STNSurface tensionN/m
PPressurekPa
TTemperatureK
QQuality (vapor fraction)-

Multiple properties can be requested in one call, separated by semicolons: "D;H;S;CP;VIS;TCX"

Mixture Calculations

One of REFPROP's key advantages is sophisticated mixture handling:

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

Mixture Features:

  • Up to 20 components in a mixture
  • Advanced mixing rules (GERG-2008, Kunz-Wagner, etc.)
  • Temperature glide calculations for zeotropic blends
  • Vapor-liquid equilibrium (VLE) calculations
  • Liquid-liquid equilibrium (LLE) for certain systems

Advantages Over CoolProp

While CoolProp is excellent and free, REFPROP offers:

1. Higher Accuracy

  • REFPROP is the reference standard that other libraries validate against
  • More precise equations of state, especially near critical point
  • Better transport property correlations
  • Typical accuracy: 0.01% for density vs 0.1% for CoolProp

2. More Fluids

  • 147+ pure fluids vs ~120 in CoolProp
  • All latest refrigerants (HFOs: R1234yf, R1234ze, R1233zd, etc.)
  • More industrial and specialty chemicals
  • Frequently updated with new fluids

3. Better Mixture Handling

  • Superior mixing rules (GERG-2008, advanced models)
  • Handles complex non-ideal mixtures
  • Temperature glide for zeotropic refrigerant blends
  • VLE/LLE calculations
  • Up to 20 components vs limited mixture support in CoolProp

4. Extended Property Range

  • Valid over wider temperature and pressure ranges
  • Better extrapolation behavior
  • More reliable in extreme conditions

5. Additional Capabilities

  • Humidity calculations (psychrometrics)
  • Flash calculations (PT, PH, PS, etc.)
  • Saturation properties with Jacobian
  • Ancillary equations
  • Pseudo-pure fluid approximations

6. Official Support

  • Maintained by NIST (National Institute of Standards and Technology)
  • Technical support available
  • Regular updates with latest research
  • Publication-quality results

When to Use REFPROP vs CoolProp

Use REFPROP when:

  • Highest accuracy is required (±0.01%)
  • Working with complex mixtures
  • Need latest refrigerant data (HFOs)
  • Publication or critical design work
  • Budget allows commercial license
  • Working with zeotropic blends (temperature glide)

Use CoolProp when:

  • Budget constraints (free/open-source)
  • Basic property needs (±0.1% accuracy acceptable)
  • Pure fluids only
  • Open-source license required
  • Quick prototyping

Validation Note: CoolProp is validated against REFPROP, confirming REFPROP as the reference standard.

Common Workflow Example

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

Error Handling

REFPROP returns error codes and messages:

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

Units

REFPROP uses different unit conventions than CoolProp:

Default Units (with MOLAR BASE SI):

  • Temperature: K (Kelvin)
  • Pressure: kPa (kilopascals) - Note: CoolProp uses Pa
  • Density: kg/m³
  • Enthalpy: J/kg
  • Entropy: J/kg/K
  • Viscosity: Pa·s
  • Thermal conductivity: W/m/K

Unit Systems Available:

  • SI with molar units
  • SI with mass units (default shown above)
  • English units
  • Custom units

Best Practices

  1. Always set RPPREFIX before importing ctREFPROP
  2. Check ierr for errors after each call
  3. Use exact fluid names (case-sensitive, from FLUIDS directory)
  4. Pre-calculate compositions for mixtures (must sum to 1.0)
  5. Cache RP instance - don't reinitialize repeatedly
  6. Use appropriate input pairs for each phase region
  7. Validate results against known values initially
  8. Read error messages - REFPROP provides detailed diagnostics

References

Official Resources

  1. NIST REFPROP Website

  2. REFPROP Documentation

    • Included with installation
    • REFPROP.pdf in installation directory
  3. ctREFPROP Documentation

Key Publications

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

Support

Quick Reference

# 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 is the gold standard for thermophysical properties. While it requires a commercial license, the investment is justified for applications requiring the highest accuracy, mixture calculations, or publication-quality results. For open-source alternatives, see the coolprop-db skill.

Skills enregistrées