Phase Change Properties (thermo.phase_change)

This module contains implementations of thermo.utils.TDependentProperty representing enthalpy of vaporization and enthalpy of sublimation. A variety of estimation and data methods are available as included in the chemicals library.

For reporting bugs, adding feature requests, or submitting pull requests, please use the GitHub issue tracker.

Enthalpy of Vaporization

class thermo.phase_change.EnthalpyVaporization(CASRN='', Tb=None, Tc=None, Pc=None, omega=None, similarity_variable=None, Psat=None, Zl=None, Zg=None, extrapolation='Watson', **kwargs)[source]

Bases: thermo.utils.t_dependent_property.TDependentProperty

Class for dealing with heat of vaporization as a function of temperature. Consists of three constant value data sources, one source of tabular information, three coefficient-based methods, nine corresponding-states estimators, and the external library CoolProp.

Parameters
Tbfloat, optional

Boiling point, [K]

Tcfloat, optional

Critical temperature, [K]

Pcfloat, optional

Critical pressure, [Pa]

omegafloat, optional

Acentric factor, [-]

similarity_variablefloat, optional

similarity variable, n_atoms/MW, [mol/g]

Psatfloat or callable, optional

Vapor pressure at T or callable for the same, [Pa]

Zlfloat or callable, optional

Compressibility of liquid at T or callable for the same, [-]

Zgfloat or callable, optional

Compressibility of gas at T or callable for the same, [-]

CASRNstr, optional

The CAS number of the chemical

load_databool, optional

If False, do not load property coefficients from data sources in files [-]

extrapolationstr or None

None to not extrapolate; see TDependentProperty for a full list of all options, [-]

methodstr or None, optional

If specified, use this method by default and do not use the ranked sorting; an exception is raised if this is not a valid method for the provided inputs, [-]

Notes

To iterate over all methods, use the list stored in enthalpy_vaporization_methods.

CLAPEYRON:

The Clapeyron fundamental model desecribed in Clapeyron. This is the model which uses Zl, Zg, and Psat, all of which must be set at each temperature change to allow recalculation of the heat of vaporization.

MORGAN_KOBAYASHI:

The MK CSP model equation documented in MK.

SIVARAMAN_MAGEE_KOBAYASHI:

The SMK CSP model equation documented in SMK.

VELASCO:

The Velasco CSP model equation documented in Velasco.

PITZER:

The Pitzer CSP model equation documented in Pitzer.

RIEDEL:

The Riedel CSP model equation, valid at the boiling point only, documented in Riedel. This is adjusted with the Watson equation unless Tc is not available.

CHEN:

The Chen CSP model equation, valid at the boiling point only, documented in Chen. This is adjusted with the Watson equation unless Tc is not available.

VETERE:

The Vetere CSP model equation, valid at the boiling point only, documented in Vetere. This is adjusted with the Watson equation unless Tc is not available.

LIU:

The Liu CSP model equation, valid at the boiling point only, documented in Liu. This is adjusted with the Watson equation unless Tc is not available.

CRC_HVAP_TB:

The constant value available in [4] at the normal boiling point. This is adusted with the Watson equation unless Tc is not available. Data is available for 707 chemicals.

CRC_HVAP_298:

The constant value available in [4] at 298.15 K. This is adusted with the Watson equation unless Tc is not available. Data is available for 633 chemicals.

GHARAGHEIZI_HVAP_298:

The constant value available in [5] at 298.15 K. This is adusted with the Watson equation unless Tc is not available. Data is available for 2730 chemicals.

COOLPROP:

CoolProp external library; with select fluids from its library. Range is limited to that of the equations of state it uses, as described in [3]. Very slow but accurate.

VDI_TABULAR:

Tabular data in [4] along the saturation curve; interpolation is as set by the user or the default.

VDI_PPDS:

Coefficients for a equation form developed by the PPDS, published openly in [3]. Extrapolates poorly at low temperatures.

DIPPR_PERRY_8E:

A collection of 344 coefficient sets from the DIPPR database published openly in [6]. Provides temperature limits for all its fluids. chemicals.dippr.EQ106 is used for its fluids.

ALIBAKHSHI:

One-constant limited temperature range regression method presented in [7], with constants for ~2000 chemicals from the DIPPR database. Valid up to 100 K below the critical point, and 50 K under the boiling point.

References

1

Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.

2

Bell, Ian H., Jorrit Wronski, Sylvain Quoilin, and Vincent Lemort. “Pure and Pseudo-Pure Fluid Thermophysical Property Evaluation and the Open-Source Thermophysical Property Library CoolProp.” Industrial & Engineering Chemistry Research 53, no. 6 (February 12, 2014): 2498-2508. doi:10.1021/ie4033999. http://www.coolprop.org/

3(1,2)

Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010.

4(1,2,3)

Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics. [Boca Raton, FL]: CRC press, 2014.

5

Gharagheizi, Farhad, Poorandokht Ilani-Kashkouli, William E. Acree Jr., Amir H. Mohammadi, and Deresh Ramjugernath. “A Group Contribution Model for Determining the Vaporization Enthalpy of Organic Compounds at the Standard Reference Temperature of 298 K.” Fluid Phase Equilibria 360 (December 25, 2013): 279-92. doi:10.1016/j.fluid.2013.09.021.

6

Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill Professional, 2007.

7

Alibakhshi, Amin. “Enthalpy of Vaporization, Its Temperature Dependence and Correlation with Surface Tension: A Theoretical Approach.” Fluid Phase Equilibria 432 (January 25, 2017): 62-69. doi:10.1016/j.fluid.2016.10.013.

Attributes
interpolation_T
interpolation_property
interpolation_property_inv

Methods

calculate(T, method)

Method to calculate heat of vaporization of a liquid at temperature T with a given method.

test_method_validity(T, method)

Method to check the validity of a method.

Watson_exponent = 0.38

Exponent used in the Watson equation

calculate(T, method)[source]

Method to calculate heat of vaporization of a liquid at temperature T with a given method.

This method has no exception handling; see T_dependent_property for that.

Parameters
Tfloat

Temperature at which to calculate heat of vaporization, [K]

methodstr

Name of the method to use

Returns
Hvapfloat

Heat of vaporization of the liquid at T, [J/mol]

interpolation_T = None

No interpolation transformation by default.

interpolation_property = None

No interpolation transformation by default.

interpolation_property_inv = None

No interpolation transformation by default.

name = 'Enthalpy of vaporization'
property_max = 1000000.0

Maximum valid of heat of vaporization. Set to twice the value in the available data.

property_min = 0

Mimimum valid value of heat of vaporization. This occurs at the critical point exactly.

ranked_methods = ['COOLPROP', 'DIPPR_PERRY_8E', 'VDI_PPDS', 'MORGAN_KOBAYASHI', 'SIVARAMAN_MAGEE_KOBAYASHI', 'VELASCO', 'PITZER', 'VDI_TABULAR', 'ALIBAKHSHI', 'CRC_HVAP_TB', 'CRC_HVAP_298', 'GHARAGHEIZI_HVAP_298', 'CLAPEYRON', 'RIEDEL', 'CHEN', 'VETERE', 'LIU']

Default rankings of the available methods.

test_method_validity(T, method)[source]

Method to check the validity of a method. For CSP methods, the models are considered valid from 0 K to the critical point. For tabular data, extrapolation outside of the range is used if tabular_extrapolation_permitted is set; if it is, the extrapolation is considered valid for all temperatures.

It is not guaranteed that a method will work or give an accurate prediction simply because this method considers the method valid.

The constant methods CRC_HVAP_TB, CRC_HVAP_298, and GHARAGHEIZI_HVAP are adjusted for temperature dependence according to the Watson equation, with a temperature exponent as set in Watson_exponent, usually regarded as 0.38. However, if Tc is not set, then the adjustment cannot be made. In that case the methods are considered valid for within 5 K of their boiling point or 298.15 K as appropriate.

Parameters
Tfloat

Temperature at which to test the method, [K]

methodstr

Name of the method to test

Returns
validitybool

Whether or not a method is valid

units = 'J/mol'
thermo.phase_change.enthalpy_vaporization_methods = ['DIPPR_PERRY_8E', 'VDI_PPDS', 'COOLPROP', 'VDI_TABULAR', 'MORGAN_KOBAYASHI', 'SIVARAMAN_MAGEE_KOBAYASHI', 'VELASCO', 'PITZER', 'ALIBAKHSHI', 'CRC_HVAP_TB', 'CRC_HVAP_298', 'GHARAGHEIZI_HVAP_298', 'CLAPEYRON', 'RIEDEL', 'CHEN', 'VETERE', 'LIU']

Holds all methods available for the EnthalpyVaporization class, for use in iterating over them.

Enthalpy of Sublimation

class thermo.phase_change.EnthalpySublimation(CASRN='', Tm=None, Tt=None, Cpg=None, Cps=None, Hvap=None, extrapolation='linear', **kwargs)[source]

Bases: thermo.utils.t_dependent_property.TDependentProperty

Class for dealing with heat of sublimation as a function of temperature. Consists of one temperature-dependent method based on the heat of sublimation at 298.15 K.

Parameters
CASRNstr, optional

The CAS number of the chemical

Tmfloat, optional

Normal melting temperature, [K]

Ttfloat, optional

Triple point temperature, [K]

Cpgfloat or callable, optional

Gaseous heat capacity at a given temperature or callable for the same, [J/mol/K]

Cpsfloat or callable, optional

Solid heat capacity at a given temperature or callable for the same, [J/mol/K]

Hvapfloat of callable, optional

Enthalpy of Vaporization at a given temperature or callable for the same, [J/mol]

load_databool, optional

If False, do not load property coefficients from data sources in files [-]

extrapolationstr or None

None to not extrapolate; see TDependentProperty for a full list of all options, [-]

methodstr or None, optional

If specified, use this method by default and do not use the ranked sorting; an exception is raised if this is not a valid method for the provided inputs, [-]

Notes

To iterate over all methods, use the list stored in enthalpy_sublimation_methods.

WEBBOOK_HSUB:

Enthalpy of sublimation at a constant temperature of 298.15 K as given in [3].

GHARAGHEIZI_HSUB_298:

Enthalpy of sublimation at a constant temperature of 298 K as given in [1].

GHARAGHEIZI_HSUB:

Enthalpy of sublimation at a constant temperature of 298 K as given in [1] are adjusted using the solid and gas heat capacity functions to correct for any temperature.

CRC_HFUS_HVAP_TM:

Enthalpies of fusion in [1] are corrected to be enthalpies of sublimation by adding the enthalpy of vaporization at the fusion temperature, and then adjusted using the solid and gas heat capacity functions to correct for any temperature.

References

1(1,2,3)

Gharagheizi, Farhad, Poorandokht Ilani-Kashkouli, William E. Acree Jr., Amir H. Mohammadi, and Deresh Ramjugernath. “A Group Contribution Model for Determining the Sublimation Enthalpy of Organic Compounds at the Standard Reference Temperature of 298 K.” Fluid Phase Equilibria 354 (September 25, 2013): 265-doi:10.1016/j.fluid.2013.06.046.

2

Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics, 95E. Boca Raton, FL: CRC press, 2014.

3

Shen, V.K., Siderius, D.W., Krekelberg, W.P., and Hatch, H.W., Eds., NIST WebBook, NIST, http://doi.org/10.18434/T4M88Q

Attributes
interpolation_T
interpolation_property
interpolation_property_inv

Methods

calculate(T, method)

Method to calculate heat of sublimation of a solid at temperature T with a given method.

test_method_validity(T, method)

Method to check the validity of a method.

calculate(T, method)[source]

Method to calculate heat of sublimation of a solid at temperature T with a given method.

This method has no exception handling; see T_dependent_property for that.

Parameters
Tfloat

Temperature at which to calculate heat of sublimation, [K]

methodstr

Name of the method to use

Returns
Hsubfloat

Heat of sublimation of the solid at T, [J/mol]

interpolation_T = None

No interpolation transformation by default.

interpolation_property = None

No interpolation transformation by default.

interpolation_property_inv = None

No interpolation transformation by default.

name = 'Enthalpy of sublimation'
property_max = 1000000.0

Maximum valid of heat of sublimation. A theoretical concept only.

property_min = 0

Mimimum valid value of heat of vaporization. A theoretical concept only.

ranked_methods = ['WEBBOOK_HSUB', 'GHARAGHEIZI_HSUB', 'CRC_HFUS_HVAP_TM', 'GHARAGHEIZI_HSUB_298']
test_method_validity(T, method)[source]

Method to check the validity of a method. For tabular data, extrapolation outside of the range is used if tabular_extrapolation_permitted is set; if it is, the extrapolation is considered valid for all temperatures.

It is not guaranteed that a method will work or give an accurate prediction simply because this method considers the method valid.

Parameters
Tfloat

Temperature at which to test the method, [K]

methodstr

Name of the method to test

Returns
validitybool

Whether or not a method is valid

units = 'J/mol'
thermo.phase_change.enthalpy_sublimation_methods = ['WEBBOOK_HSUB', 'GHARAGHEIZI_HSUB', 'CRC_HFUS_HVAP_TM', 'GHARAGHEIZI_HSUB_298']

Holds all methods available for the EnthalpySublimation class, for use in iterating over them.