matplotlib

Table Of Contents

Previous topic

Tabular Taylor Series Extrapolation

Next topic

Pseudo-pure Fluids

This Page

CoolProp Fluid Information

There are 4 basic classes of fluids that can be used in CoolProp, an example is provided for each one.

Pure Fluids, Pseudo-Pure Fluids

All the fluids listed in Pure-Fluids and Pseudo-Pure-Fluids sections above can be used. To use one of these fluids, do something like

In [1]: from CoolProp.CoolProp import Props

#Density of dry air at 1 atm. and 25C
In [2]: Props('D','T',298,'P',101.325,'Air')
Out[2]: 1.1849162390859582

You can also use any of the aliases of the fluids that are the listed on the fluid page. For instance, R717 is the refrigerant number for ammonia

In [3]: from CoolProp.CoolProp import Props

#Density of saturated ammonia vapor at 1 atm.
In [4]: Props('D','Q',1,'P',101.325,'R717')
Out[4]: 0.8895485825474779

#Density of saturated ammonia vapor at 1 atm.
In [5]: Props('D','Q',1,'P',101.325,'Ammonia')
Out[5]: 0.8895485825474779

REFPROP Fluids and Mixtures

If you are on Windows and have REFPROP installed, you can use it with CoolProp. REFPROP needs to be installed in c:\Program Files\REFPROP. If it is somewhere else, just copy it to this location.

It is also possible to use REFPROP on Linux. Please follow the instructions from https://github.com/jowr/librefprop.so to install the library from Fortran sources. Additionally, you also need to copy the fluid and mixture files to /opt/refprop.

All the pure fluids in REFPROP are used just like the CoolProp fluids except that “REFPROP-” is added at the beginning of the fluid name. You can use any fluid that is included in REFPROP, but you must use the REFPROP fluid file name. For CoolProp Fluids, you can use the get_REFPROPName() function to get the REFPROP name for the fluid.

In [6]: from CoolProp.CoolProp import Props

#Saturated isobutane vapor density at 1 atmosphere
In [7]: Props('D','Q',1,'P',101.325,'REFPROP-ISOBUTAN')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-7-69c8e6cfb65b> in <module>()
----> 1 Props('D','Q',1,'P',101.325,'REFPROP-ISOBUTAN')

C:\Miniconda\envs\coolpropv4docs\lib\site-packages\CoolProp\CoolProp.pyd in CoolProp.CoolProp.Props (build\temp.win-amd64-2.7\Release\pyrex\CoolProp\CoolProp.cpp:10955)()

C:\Miniconda\envs\coolpropv4docs\lib\site-packages\CoolProp\CoolProp.pyd in CoolProp.CoolProp.Props (build\temp.win-amd64-2.7\Release\pyrex\CoolProp\CoolProp.cpp:10350)()

C:\Miniconda\envs\coolpropv4docs\lib\site-packages\CoolProp\CoolProp.pyd in CoolProp.CoolProp.__Props_err2 (build\temp.win-amd64-2.7\Release\pyrex\CoolProp\CoolProp.cpp:9875)()

ValueError: CoolProp error: REFPROP: The REFPROP DLL you are using has expired (Dec. 30, 2014). Please return to the Refprop website and download the latest.                                                                                                                                       37709.56631258091,    "pmax": 60000000.0,    "rho_hsatVmax": 276.8708342196202,    "s_hsatVmax": 156.117608199971`l :: inputs were:"D","Q",1.0000000000000000e+00,"P",1.0132500000000000e+02,"REFPROP-ISOBUTAN"

You can also use mixtures in REFPROP, there is a special format for the fluid name. The fluid name is set up like this: "REFPROP-MIX:R32[0.697615]&R125[0.302385]" - this is R410A. The numbers within the brackets are the mole fractions of the components. They must add up to 1.0

In [8]: from CoolProp.CoolProp import Props

#Saturated R410 vapor density at 1 atmosphere using the mixture properties
In [9]: Props('D','Q',1,'P',101.325,'REFPROP-MIX:R32[0.697615]&R125[0.302385]')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-9-aded24ee9f56> in <module>()
----> 1 Props('D','Q',1,'P',101.325,'REFPROP-MIX:R32[0.697615]&R125[0.302385]')

C:\Miniconda\envs\coolpropv4docs\lib\site-packages\CoolProp\CoolProp.pyd in CoolProp.CoolProp.Props (build\temp.win-amd64-2.7\Release\pyrex\CoolProp\CoolProp.cpp:10955)()

C:\Miniconda\envs\coolpropv4docs\lib\site-packages\CoolProp\CoolProp.pyd in CoolProp.CoolProp.Props (build\temp.win-amd64-2.7\Release\pyrex\CoolProp\CoolProp.cpp:10350)()

C:\Miniconda\envs\coolpropv4docs\lib\site-packages\CoolProp\CoolProp.pyd in CoolProp.CoolProp.__Props_err2 (build\temp.win-amd64-2.7\Release\pyrex\CoolProp\CoolProp.cpp:9875)()

ValueError: CoolProp error: REFPROP: The REFPROP DLL you are using has expired (Dec. 30, 2014). Please return to the Refprop website and download the latest.                                                                                                                                       37709.56631258091,    "pmax": 60000000.0,    "rho_hsatVmax": 276.8708342196202,    "s_hsatVmax": 156.117608199971`l :: inputs were:"D","Q",1.0000000000000000e+00,"P",1.0132500000000000e+02,"REFPROP-MIX:R32[0.697615]&R125[0.302385]"

In Engineering Equation Solver (EES), you can compose a fluid string using something like a$='REFPROP-MIX:'||'R32'||'['||yy$||']'||and$||'R125'||'['||xx$||']' where yy and xx are mole fractions of R32 and R125 respectively.

Incompressible Liquids

There is also a selection of incompressible liquids implemented. These only allow for calls with temperature and pressure as input and provide only a subset of thermophysical properties, namely: density, heat capacity, internal energy, enthalpy, entropy, viscosity and thermal conductivity. Hence, the available output keys for the Props function are: “D”, “C”, “U”, “H”, “S”, “V”, “L”, “Tmin”, Tmax” and “Psat”. An internal iteration allows us to use enthalpy and pressure as inputs, but be aware of the reduced computational efficiency.

In [10]: from CoolProp.CoolProp import Props

#Density of HFE-7100 at 300 K and 1 atm.
In [11]: Props('D','T',300,'P',101.325,'HFE')
Out[11]: 1546.8245

For refrigeration applications, 8 fluids were implemented from Aake Melinder “Properties of Secondary Working Fluids for Indirect Systems” published in 2010 by IIR and coefficients are obtained from a fit between -80 and +100 degrees Celsius.

Fluid Name Description
DEB Diethyl Benzene
HCM Hydrocarbon Mixture (Therminol D12 Solutia)
HFE Hydrofluoroether HFE-7100
PMS1 Polydimethylsiloxan 1.
PMS2 Polydimethylsiloxan 2.
SAB Synthetic alkyl benzene
HCB Hydrocarbon blend (Dynalene MV)
TCO Terpene from citrus oils

Some additional secondary cooling fluids are based on data compiled by Morten Juel Skovrup in his SecCool software provided by his employer IPU. Fits have been made according to the manufacturer data stored in the sodtware. The Aspen Temper fluids are a blend of potassium formate and sodiumpropionate and the Zitrec S group consists mainly of potassium acetate and potassium formate.

Fluid Name Description
AS10 Aspen Temper -10 (-10 to +27.5 C)
AS20 Aspen Temper -20 (-20 to +27.5 C)
AS30 Aspen Temper -30 (-30 to +27.5 C)
AS40 Aspen Temper -40 (-40 to +27.5 C)
AS55 Aspen Temper -55 (-55 to +27.5 C)
ZS10 Zitrec S -10 (-10 to +85 C)
ZS25 Zitrec S -25 (-25 to +85 C)
ZS40 Zitrec S -40 (-40 to +85 C)
ZS45 Zitrec S -45 (-45 to +85 C)
ZS55 Zitrec S -55 (-55 to +85 C)

There are also a few high temperature heat transfer fluids with individual temperature ranges. Please refer to the file IncompLiquid.h for a complete overview. For these fluids, information from commercial data sheets was used to obtain coefficients.

Fluid Name Description
TD12 Therminol D12 (-85 to +230 C)
TVP1 Therminol VP-1 (+12 to +397 C)
T72 Therminol 72 (-10 to +380 C)
T66 Therminol 66 (0 to +345 C)
DowJ Dowtherm J (-80 to +345 C)
DowQ Dowtherm Q (-35 to +360 C)
TX22 Texatherm 22 (0 to +350 C)
NaK Nitrate Salt Blend (+300 to +600 C)
XLT Syltherm XLT (-100 to +260 C)
HC10 Dynalene HC-10 (-10 to +218 C)
HC20 Dynalene HC-20 (-20 to +210 C)
HC30 Dynalene HC-30 (-30 to +210 C)
HC40 Dynalene HC-40 (-40 to +200 C)
HC50 Dynalene HC-50 (-50 to +210 C)

All fluids are implemented with polynomials for density and heat capacity with typically 4 coefficients and hence a third order polynomial. Thermal conductivity is a second order polynomial and viscosity and vapour pressure are exponential functions.

\[\begin{split}\rho &= \sum_{i=0}^n C_{\rho}[i] \cdot T^i \\ c &= \sum_{i=0}^n C_{c}[i] \cdot T^i \\ u &= \int_{0}^{1} c\left( T \right) dT = \sum_{i=0}^n \frac{1}{i+1} \cdot C_{c}[i] \cdot \left( T_1^{i+1} - T_0^{i+1} \right) \\ s &= \int_{0}^{1} \frac{c\left( T \right)}{T} dT = C_{c}[0] \cdot \ln\left(\frac{T_1}{T_0}\right) + \sum_{i=0}^{n-1} \frac{1}{i+1} \cdot C_{c}[i+1] \cdot \left( T_1^{i+1} - T_0^{i+1} \right) \\ \lambda &= \sum_{i=0}^n C_{\lambda}[i] \cdot T^i \\ \mu &= \exp\left( \frac{C_{\mu}[0]}{T+C_{\mu}[1]} - C_{\mu}[2] \right) \\ p_{sat} &= \exp\left( \frac{C_{sat}[0]}{T+C_{sat}[1]} - C_{sat}[2] \right) \\\end{split}\]

Brines and Solutions

All the brines and solutions can be accessed through the Props function. To use them, the fluid name is something like "MEG-20%" which is a 20% by mass ethylene glycol solution. Note that these fluids have an arbitrary reference state: Be careful with enthalpy and entropy calculations. Again, only temperature and pressure inputs are supported directly to calculate the same subset of thermophysical properties as above , namely: density, heat capacity, internal energy, enthalpy, entropy, viscosity and thermal conductivity. Hence, the available output keys for the Props function are: “D”, “C”, “U”, “H”, “S”, “V”, “L”, “Tmin”, Tmax” and “Tfreeze”. An internal iteration allows us to use enthalpy and pressure as inputs, but be aware of the reduced computational efficiency.

In [12]: from CoolProp.CoolProp import Props

#Specific heat 20% mass ethylene glycol solution at 300 K and 1 atm.
In [13]: Props('C','T',300,'P',101.325,'MEG-20%')
Out[13]: 3.9086424836525637

For Lithium-Bromide, the publication by Patek and Klomfar from 2005 was implemented based on the source code provided by the authors. The paper covering the equations can be found in the International Journal of Refrigeration. Data is available for temperatures from 0 C to 225 C and for the full composition range. Use LiBr to acccess the functions.

A number of aqueous solutions are implemented using the coefficients from Aake Melinder “Properties of Secondary Working Fluids for Indirect Systems” published in 2010 by IIR. According to the book, 2D polynomials are given in a form that satisfies \(0 \leq i \leq 5\), \(0 \leq j \leq 3\) and \(i + j \leq 5\) yielding a triangular matrix of coefficients. It is only for the freezing temperature calculation that the implemented procedures differ from what is presented in Melinder’s book the dependency on the current temperature is removed. In CoolProp, \(T_{freeze}\) only depends on concentration.

Melinder Fluids Description max. T max. x
MEG Ethylene Glycol (C2H6O2) +100 C 60 %
MPG Propylene Glycol (C3H8O2) +100 C 60 %
MEA Ethyl Alcohol, Ethanol (C2H6O) +40 C 60 %
MMA Methyl Alcohol, Methanol (CH4O) +40 C 60 %
MGL Glycerol (C3H8O3) +40 C 60 %
MAM Ammonia (NH3) +30 C 30 %
MKC Potassium Carbonate (K2CO3) +40 C 40 %
MCA Calcium Chloride (CaCl2) +40 C 30 %
MMG Magnesium Chloride (MgCl2) +40 C 30 %
MNA Sodium Chloride (NaCl) +40 C 23 %
MKA Potassium Acetate (CH3CO2K) +40 C 45 %
MKF Potassium Formate (CHKO2) +40 C 48 %
MLI Lithium Chloride (LiCl) +40 C 24 %

Furthermore, there is a number of other secondary fluids that can be accessed in the same way. Most information is based on the data compiled by Morten Juel Skovrup in his SecCool software provided by his employer IPU. The coefficient matrix of the SecCool-based fluids has the same structure as mentioned above.

For slurry ice, the concentration \(x\) refers to the solid content and the heat capacity includes the heat of fusion. It might be necessary to adjust the solid content during heat transfer. The implementation is based on the data available in SecCool, which was originally recorded at the Danish Technological Institute (DTI).

SecCool Fluids Description max. T max. x
ZiAC ZitrecAC (corrosion inhibitor) +100 C 50 %
IceEA Ethanol-water mixture with slurry ice -10 C 35 %
IcePG Propylene glycol-water mixture with slurry ice -10 C 35 %
IceNA Sodium chloride-water mixture with slurry ice -5 C 35 %
PK2000 Pekasol 2000 (Potassium acetate and formate) +100 C 100 %

In both of the above cases, \(i\) is the exponent for the concentration \(x\) and \(j\) is used with the temperature \(T\). Properties are modelled with the following polynomials:

\[\begin{split}\rho &= \sum_{i=0}^n x^i \cdot \sum_{j=0}^m C_{\rho}[i,j] \cdot T^j \\ c &= \sum_{i=0}^n x^i \cdot \sum_{j=0}^m C_{c}[i,j] \cdot T^j \\ u &= \int_{0}^{1} c\left( x,T \right) dT = \sum_{i=0}^n x^i \cdot \sum_{j=0}^m \frac{1}{j+1} \cdot C_{c}[i,j] \cdot \left( T_1^{j+1} - T_0^{j+1} \right) \\ s &= \int_{0}^{1} \frac{c\left( x,T \right)}{T} dT = \sum_{i=0}^n x^i \cdot \left( C_{c}[i,0] \cdot \ln\left(\frac{T_1}{T_0}\right) + \sum_{j=0}^{m-1} \frac{1}{j+1} \cdot C_{c}[i,j+1] \cdot \left( T_1^{j+1} - T_0^{j+1} \right) \right) \\ \lambda &= \sum_{i=0}^n x^i \cdot \sum_{j=0}^m C_{\lambda}[i,j] \cdot T^j \\ \mu &= \exp \left( \sum_{i=0}^n x^i \cdot \sum_{j=0}^m C_{\mu}[i,j] \cdot T^j \right) \\ T_{freeze} &= \sum_{i=0}^n C_{freeze}[i] \cdot x^i \\\end{split}\]

Using a centered approach for the independent variables, the fit quality can be enhanced. Therefore, all solutions have a reference temperature and concentration in the original work by Melinder and Skovrup as well as in CoolProp: \(x = x_{real} - x_{ref}\) and \(T = T_{real} - T_{ref}\), this technique does not affect the calculation of the derived quantity internal energy since the formula contains temperature differences. However, integrating \(c(x,T)T^{-1}dT\) for the entropy requires some changes due to the logarithm. To structure the problem, we introduce a variable \(d(j,T_{real})\), which will be expressed by a third sum. As a first step for simplification, one has to expand the the binomial \((T_{real}-T_{ref})^n\) to a series. Only containing \(j\) and \(T_{real}\), \(d\) is independent from \(x\) and can be computed outside the loop for enhanced computational efficiency. An integration of the expanded binomial then yields the final factor \(D\) to be multiplied with the other coefficients and the concentration.

\[\begin{split}s &= \int_{0}^{1} \frac{c\left( x,T \right)}{T} dT = \sum_{i=0}^n x^i \cdot \sum_{j=0}^m C_{c}[i,j] \cdot D(j,T_0,T_1) \\ D &= (-1)^j \cdot \ln \left( \frac{T_1}{T_0} \right) \cdot T_{ref}^j + \sum_{k=0}^{j-1} \binom{j}{k} \cdot \frac{(-1)^k}{j-k} \cdot \left( T_1^{j-k} - T_0^{j-k} \right) \cdot T_{ref}^k\end{split}\]