Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Using CoolProp

All of the examples in this book will use Cantera to handle the thermodynamic properties, but another option is to use CoolProp. CoolProp has a large database of equations of state and properties for 122 fluids.

You may need to install CoolProp, which you can do with pip or conda:

pip install coolprop

or

conda install --channel conda-forge coolprop

Once installed, we can import and then evaluate properties:

In some rare cases, we may need to rely on CoolProp to determine the thermodynamic state when Cantera does not support the combination of properties needed.

import CoolProp.CoolProp as CP
fluid = 'Water'

temp = 300 # K
pres = 101325 # Pa

# Specify the temperature and pressure to fix the state
density = CP.PropsSI('D', 'T', temp, 'P', pres, fluid)
phase = CP.PhaseSI('T', temp, 'P', pres, fluid)

print(f'Density: {density: .2f} kg/m^3')
print(f'Phase: {phase}')
Density:  996.56 kg/m^3
Phase: liquid

CoolProp has a lot of fluids in its database. For example, we can examine the properties of toluene (C6_6H5_5CH3_3), an aromatic hydrocarbon used as a solvent and also as an octane booster in fuels:

Check out CoolProp’s documentation for more examples, and a table of string inputs to the PropsSI function.

from pint import UnitRegistry
ureg = UnitRegistry()
Q_ = ureg.Quantity

fluid = 'toluene'

temp = Q_(200, 'degC')
pres = Q_(1, 'atm')

# Specify the temperature and pressure to fix the state
density = CP.PropsSI(
    'D', 'T', temp.to('K').magnitude, 'P', 
    pres.to('Pa').magnitude, fluid
    )
phase = CP.PhaseSI(
    'T', temp.to('K').magnitude, 
    'P', pres.to('Pa').magnitude, fluid
    )

print(f'Density: {density: .2f} kg/m^3')
print(f'Phase: {phase}')
Density:  2.42 kg/m^3
Phase: gas