"""Chemical Engineering Design Library (ChEDL). Utilities for process modeling.
Copyright (C) 2016, 2017, 2018, 2019, 2020 Caleb Bell
<Caleb.Andrew.Bell@gmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
This module contains various thermal conductivity estimation routines, dataframes
of fit coefficients, and mixing rules.
For reporting bugs, adding feature requests, or submitting pull requests,
please use the `GitHub issue tracker <https://github.com/CalebBell/chemicals/>`_.
.. contents:: :local:
Pure Low Pressure Liquid Correlations
-------------------------------------
.. autofunction:: chemicals.thermal_conductivity.Sheffy_Johnson
.. autofunction:: chemicals.thermal_conductivity.Sato_Riedel
.. autofunction:: chemicals.thermal_conductivity.Lakshmi_Prasad
.. autofunction:: chemicals.thermal_conductivity.Gharagheizi_liquid
.. autofunction:: chemicals.thermal_conductivity.Nicola_original
.. autofunction:: chemicals.thermal_conductivity.Nicola
.. autofunction:: chemicals.thermal_conductivity.Bahadori_liquid
.. autofunction:: chemicals.thermal_conductivity.kl_Mersmann_Kind
Pure High Pressure Liquid Correlations
--------------------------------------
.. autofunction:: chemicals.thermal_conductivity.DIPPR9G
.. autofunction:: chemicals.thermal_conductivity.Missenard
Liquid Mixing Rules
-------------------
.. autofunction:: chemicals.thermal_conductivity.DIPPR9H
.. autofunction:: chemicals.thermal_conductivity.DIPPR9I
.. autofunction:: chemicals.thermal_conductivity.Filippov
Pure Low Pressure Gas Correlations
----------------------------------
.. autofunction:: chemicals.thermal_conductivity.Eucken
.. autofunction:: chemicals.thermal_conductivity.Eucken_modified
.. autofunction:: chemicals.thermal_conductivity.DIPPR9B
.. autofunction:: chemicals.thermal_conductivity.Chung
.. autofunction:: chemicals.thermal_conductivity.Eli_Hanley
.. autofunction:: chemicals.thermal_conductivity.Gharagheizi_gas
.. autofunction:: chemicals.thermal_conductivity.Bahadori_gas
Pure High Pressure Gas Correlations
-----------------------------------
.. autofunction:: chemicals.thermal_conductivity.Stiel_Thodos_dense
.. autofunction:: chemicals.thermal_conductivity.Eli_Hanley_dense
.. autofunction:: chemicals.thermal_conductivity.Chung_dense
Gas Mixing Rules
----------------
.. autofunction:: chemicals.thermal_conductivity.Lindsay_Bromley
.. autofunction:: chemicals.thermal_conductivity.Wassiljewa_Herning_Zipperer
Correlations for Specific Substances
------------------------------------
.. autofunction:: chemicals.thermal_conductivity.k_IAPWS
.. autofunction:: chemicals.thermal_conductivity.k_air_lemmon
Fit Correlations
----------------
.. autofunction:: chemicals.thermal_conductivity.PPDS8
.. autofunction:: chemicals.thermal_conductivity.PPDS3
.. autofunction:: chemicals.thermal_conductivity.Chemsep_16
Fit Coefficients
----------------
All of these coefficients are lazy-loaded, so they must be accessed as an
attribute of this module.
.. data:: k_data_Perrys_8E_2_315
Data from [1]_ with :obj:`chemicals.dippr.EQ100` coefficients for liquids.
.. data:: k_data_Perrys_8E_2_314
Data from [1]_ with :obj:`chemicals.dippr.EQ102` coefficients for gases.
.. data:: k_data_VDI_PPDS_9
Data from [2]_ with polynomial coefficients for liquids.
.. data:: k_data_VDI_PPDS_10
Data from [2]_ with polynomial coefficients for gases.
.. [1] Green, Don, and Robert Perry. Perry's Chemical Engineers' Handbook,
Eighth Edition. McGraw-Hill Professional, 2007.
.. [2] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition.
Berlin; New York:: Springer, 2010.
.. ipython::
In [1]: import chemicals
In [2]: chemicals.thermal_conductivity.k_data_Perrys_8E_2_315
In [3]: chemicals.thermal_conductivity.k_data_Perrys_8E_2_314
In [4]: chemicals.thermal_conductivity.k_data_VDI_PPDS_9
In [5]: chemicals.thermal_conductivity.k_data_VDI_PPDS_10
"""
__all__ = ['Sheffy_Johnson', 'Sato_Riedel', 'Lakshmi_Prasad',
'Gharagheizi_liquid', 'Nicola_original', 'Nicola', 'Bahadori_liquid',
'kl_Mersmann_Kind', 'DIPPR9G', 'DIPPR9I','k_IAPWS',
'Missenard', 'DIPPR9H', 'Filippov', 'Eucken', 'Eucken_modified', 'DIPPR9B',
'Chung', 'Eli_Hanley', 'Gharagheizi_gas', 'Bahadori_gas', 'PPDS8', 'PPDS3',
'Stiel_Thodos_dense', 'Eli_Hanley_dense', 'Chung_dense', 'Lindsay_Bromley',
'Wassiljewa_Herning_Zipperer', 'k_air_lemmon', 'Chemsep_16']
from math import atan
from fluids.constants import N_A, R, R_inv, k, pi
from fluids.numerics import bisplev, exp, implementation_optimize_tck, log, sqrt, trunc_exp
from fluids.numerics import numpy as np
from chemicals.data_reader import data_source, register_df_source
from chemicals.utils import PY37, can_load_data, mark_numba_incompatible, os_path_join, source_path
from chemicals.viscosity import Herning_Zipperer
folder = os_path_join(source_path, 'Thermal Conductivity')
register_df_source(folder, 'Table 2-314 Vapor Thermal Conductivity of Inorganic and Organic Substances.tsv')
register_df_source(folder, 'Table 2-315 Thermal Conductivity of Inorganic and Organic Liquids.tsv')
register_df_source(folder, 'VDI PPDS Thermal conductivity of saturated liquids.tsv', csv_kwargs={'float_precision': 'legacy'})
register_df_source(folder, 'VDI PPDS Thermal conductivity of gases.tsv', csv_kwargs={'float_precision': 'legacy'})
_k_data_loaded = False
@mark_numba_incompatible
def _load_k_data():
global _k_data_loaded, k_data_Perrys_8E_2_314, k_values_Perrys_8E_2_314
global k_data_Perrys_8E_2_315, k_values_Perrys_8E_2_315, k_data_VDI_PPDS_9
global k_values_VDI_PPDS_9, k_data_VDI_PPDS_10, k_values_VDI_PPDS_10
k_data_Perrys_8E_2_314 = data_source('Table 2-314 Vapor Thermal Conductivity of Inorganic and Organic Substances.tsv')
k_values_Perrys_8E_2_314 = np.array(k_data_Perrys_8E_2_314.values[:, 1:], dtype=float)
k_data_Perrys_8E_2_315 = data_source('Table 2-315 Thermal Conductivity of Inorganic and Organic Liquids.tsv')
k_values_Perrys_8E_2_315 = np.array(k_data_Perrys_8E_2_315.values[:, 1:], dtype=float)
k_data_VDI_PPDS_9 = data_source('VDI PPDS Thermal conductivity of saturated liquids.tsv')
k_values_VDI_PPDS_9 = np.array(k_data_VDI_PPDS_9.values[:, 1:], dtype=float)
k_data_VDI_PPDS_10 = data_source('VDI PPDS Thermal conductivity of gases.tsv')
k_values_VDI_PPDS_10 = np.array(k_data_VDI_PPDS_10.values[:, 1:], dtype=float)
if PY37:
def __getattr__(name):
if name in ('k_data_Perrys_8E_2_314', 'k_values_Perrys_8E_2_314', 'k_data_Perrys_8E_2_315',
'k_values_Perrys_8E_2_315', 'k_data_VDI_PPDS_9', 'k_values_VDI_PPDS_9', 'k_data_VDI_PPDS_10',
'k_values_VDI_PPDS_10'):
_load_k_data()
return globals()[name]
raise AttributeError(f"module {__name__} has no attribute {name}")
else:
if can_load_data:
_load_k_data()
pi_inv = 1.0/pi # TODO move to fluids.constants
[docs]def PPDS8(T, Tc, a0, a1, a2, a3):
r'''Calculate the thermal conductivity of a liquid using the 4-term
`tau` polynomial developed by the PPDS and named PPDS equation 8.
.. math::
k_l = a_0\left(1 + \sum_i^3 a_i\tau^{i/3} \right)
Parameters
----------
T : float
Temperature of fluid [K]
Tc : float
Critical temperature of fluid [K]
a0 : float
Coefficient, [-]
a1 : float
Coefficient, [-]
a2 : float
Coefficient, [-]
a3 : float
Coefficient, [-]
Returns
-------
k : float
Low pressure liquid thermal conductivity, [W/(m*K)]
Notes
-----
Examples
--------
Sample coefficients for benzene in [1]_, at 500 K:
>>> PPDS8(T=500.0, Tc=562.05, a0=0.0641126, a1=0.61057, a2=-1.72442, a3=3.94394)
0.08536381765218425
References
----------
.. [1] "ThermoData Engine (TDE103b V10.1) User`s Guide."
https://trc.nist.gov/TDE/Help/TDE103b/Eqns-Pure-ThermalCondSatL/PPDS8.htm
'''
tau = 1.0 - T/Tc
tau_cbrt = tau**(1.0/3.0)
return a0*(1.0 + a1*tau_cbrt + a2*tau_cbrt*tau_cbrt + a3*tau)
[docs]def PPDS3(T, Tc, a1, a2, a3):
r'''Calculate the thermal conductivity of a low-pressure gas using the 3-term
`Tr` polynomial developed by the PPDS and named PPDS equation 3.
.. math::
k_g = \sqrt{T_r}\left( \sum_{i=1}^3 \frac{a_i}{T_r^i} \right)^{-1}
Parameters
----------
T : float
Temperature of fluid [K]
Tc : float
Critical temperature of fluid [K]
a1 : float
Coefficient, [-]
a2 : float
Coefficient, [-]
a3 : float
Coefficient, [-]
Returns
-------
k : float
Low pressure gas thermal conductivity, [W/(m*K)]
Notes
-----
Examples
--------
Sample coefficients for pentane in [1]_, at 400 K:
>>> PPDS3(T=400.0, Tc=470.008, a1=11.6366, a2=25.1191, a3=-7.21674)
0.0251734811601927
References
----------
.. [1] "ThermoData Engine (TDE103b V10.1) User`s Guide."
https://trc.nist.gov/TDE/Help/TDE103b/Eqns-Pure-ThermalCondG/PPDS3-ThermCondGas.htm
'''
Tr = T/Tc
Tr_inv = 1.0/Tr
tot = Tr_inv*(a1 + Tr_inv*(a2 + a3*Tr_inv))
return sqrt(Tr)/tot
[docs]def Chemsep_16(T, A, B, C, D, E):
r'''Calculate the thermal conductivity of a low-pressure liquid using the
5-term `T` exponential polynomial found in ChemSep.
.. math::
k_l = A + \exp\left(\frac{B}{T} + C + DT + ET^2 \right)
Parameters
----------
T : float
Temperature of fluid [K]
A : float
Coefficient, [W/(m*K)]
B : float
Coefficient, [K]
C : float
Coefficient, [-]
D : float
Coefficient, [1/K]
E : float
Coefficient, [1/K^2]
Returns
-------
k : float
Low pressure liquid thermal conductivity, [W/(m*K)]
Notes
-----
This correlation is also used by ChemSep for surface tension. Calculation of
negative values is prevented and those are set to 0.
Examples
--------
Sample coefficients for liquid thermal conductivity of n-hexane in [1]_, at
300 K:
>>> Chemsep_16(300.0, -0.12682, -1.5015, -1.0467, -0.00088709, -9.3679E-07)
0.11924904787869
References
----------
.. [1] Kooijman, Harry A., and Ross Taylor. The ChemSep Book. Books on
Demand Norderstedt, Germany, 2000.
'''
prop = A + trunc_exp(B/T + C + D*T + E*T*T)
if prop < 0.0:
prop = 0.0
return prop
[docs]def k_IAPWS(T, rho, Cp=None, Cv=None, mu=None, drho_dP=None, drho_dP_Tr=None):
r'''Calculate the thermal conductivity of water or steam according to the
2011 IAPWS [1]_ formulation. Critical enhancement is ignored unless
parameters for it are provided.
.. math::
\bar\lambda = \bar\lambda_0\times \bar\lambda_1(\bar T, \bar \rho)
+ \bar\lambda_2(\bar T, \bar\rho)
.. math::
\bar\lambda_0 = \frac{\sqrt{\bar T}}
{\sum_{k=0}^4 \frac{L_k}{\bar T^k}}
.. math::
\bar \lambda_1(\bar T, \bar \rho) = \exp\left[ \bar\rho \sum_{i=0}^4
\left(\left(\frac{1}{\bar T} - 1 \right)^i
\sum_{j=0}^5 L_{ij}(\bar\rho - 1)^j\right)\right]
.. math::
\bar\lambda_2 = \Gamma\frac{\bar\rho \bar c_p \bar T}{\bar \mu} Z(y)
.. math::
Z(y) = \frac{2}{\pi y} \left\{\left[(1 - \kappa^{-1})\arctan(y)
+ \kappa^{-1}y\right] - \left[1 - \exp\left(\frac{-1}{y^{-1}
+ y^{-2}/3\bar\rho^2}\right)\right]\right\}
.. math::
y = \bar q_D \xi(\bar T, \bar \rho)
.. math::
\xi = \xi_0 \left(\frac{\Delta \bar\chi}{\Gamma_0}\right)^{\nu/\gamma}
.. math::
\Delta \bar\chi(\bar T, \bar \rho) = \bar\rho\left[
\zeta(\bar T, \bar \rho) - \zeta(\bar T_R, \bar \rho)\frac{\bar T_R}{\bar T}
\right]
.. math::
\zeta = \left(\frac{\partial \bar \rho}{\partial \bar p}\right)_{\bar T}
Parameters
----------
T : float
Temperature water [K]
rho : float
Density of water [kg/m^3]
Cp : float, optional
Constant pressure heat capacity of water, [J/kg/K]
Cv : float, optional
Constant volume heat capacity of water, [J/kg/K]
mu : float, optional
Viscosity of water, [Pa*s]
drho_dP : float, optional
Partial derivative of density with respect to pressure at constant
temperature, [kg/m^3/Pa]
drho_dP_Tr : float, optional
Partial derivative of density with respect to pressure at constant
temperature (at the reference temperature (970.644 K) and the actual
density of water); will be calculated from the industrial formulation
fit if omitted, [kg/m^3/Pa]
Returns
-------
k : float
Thermal condiuctivity, [W/m/K]
Notes
-----
Gamma = 177.8514;
qd = 0.4E-9;
nu = 0.630;
gamma = 1.239;
zeta0 = 0.13E-9;
Gamma0 = 0.06;
TRC = 1.5
The formulation uses the industrial variant of the critical enhancement.
It matches to 5E-6 relative tolerance at the check temperature, and should
match even closer outside it.
Examples
--------
>>> k_IAPWS(647.35, 750.)
0.5976194153179502
Region 1, test 1, from MPEI, exact match:
>>> k_IAPWS(T=620., rho=613.227777440324, Cp=7634.337046792,
... Cv=3037.934412104, mu=70.905106751524E-6, drho_dP=5.209378197916E-6)
0.48148519510200044
Full scientific calculation:
>>> from chemicals.iapws import iapws95_properties, iapws95_P, iapws95_Tc
>>> from chemicals.viscosity import mu_IAPWS
>>> T, P = 298.15, 1e5
>>> rho, _, _, _, Cv, Cp, _, _, _, _, drho_dP = iapws95_properties(T, P)
>>> P_ref = iapws95_P(1.5*iapws95_Tc, rho)
>>> _, _, _, _, _, _, _, _, _, _, drho_dP_Tr = iapws95_properties(1.5*iapws95_Tc, P_ref)
>>> mu = mu_IAPWS(T, rho, drho_dP, drho_dP_Tr)
>>> k_IAPWS(T, rho, Cp, Cv, mu, drho_dP, drho_dP_Tr)
0.60651532815
References
----------
.. [1] Huber, M. L., R. A. Perkins, D. G. Friend, J. V. Sengers, M. J.
Assael, I. N. Metaxa, K. Miyagawa, R. Hellmann, and E. Vogel. "New
International Formulation for the Thermal Conductivity of H2O."
Journal of Physical and Chemical Reference Data 41, no. 3 (September 1,
2012): 033102. doi:10.1063/1.4738955.
'''
rhor = rho*0.003105590062111801#1/322.0
Tr = T*0.0015453657571674064 # 1/647.096
Tr_inv = 1.0/Tr
# Lijs = [[1.60397357, -0.646013523, 0.111443906, 0.102997357, -0.0504123634, 0.00609859258],
# [2.33771842, -2.78843778, 1.53616167, -0.463045512, 0.0832827019, -0.00719201245],
# [2.19650529, -4.54580785, 3.55777244, -1.40944978, 0.275418278, -0.0205938816],
# [-1.21051378, 1.60812989, -0.621178141, 0.0716373224, 0, 0],
# [-2.7203370, 4.57586331, -3.18369245, 1.1168348, -0.19268305, 0.012913842]]
# Aijs = [[6.53786807199516, 6.52717759281799, 5.35500529896124, 1.55225959906681, 1.11999926419994],
# [-5.61149954923348, -6.30816983387575, -3.96415689925446, 0.464621290821181, 0.595748562571649],
# [3.39624167361325, 8.08379285492595, 8.91990208918795, 8.93237374861479, 9.8895256507892],
# [-2.27492629730878, -9.82240510197603, -12.033872950579, -11.0321960061126, -10.325505114704],
# [10.2631854662709, 12.1358413791395, 9.19494865194302, 6.1678099993336, 4.66861294457414],
# [1.97815050331519, -5.54349664571295, -2.16866274479712, -0.965458722086812, -0.503243546373828]]
"""Unoptimized (but editable) code; the below is generated with sympy
Ls = [2.443221E-3, 1.323095E-2, 6.770357E-3, -3.454586E-3, 4.096266E-4]
lambda0 = 0
for i, L in enumerate(Ls):
lambda0 += L/Tr**i
lambda0 = Tr**0.5/lambda0
"""
lambda0 = sqrt(Tr)/(Tr_inv*(Tr_inv*(Tr_inv*(0.0004096266*Tr_inv - 0.003454586)
+ 0.006770357) + 0.01323095) + 0.002443221)
"""Unoptimized (but editable) code; the below is generated with sympy
tot1 = 0
for i, Ljs in enumerate(Lijs):
tot2 = 0
for j, L in enumerate(Ljs):
tot2 += L*(rhor - 1.)**j
tot1 += (1./Tr -1.)**i*tot2
"""
x0 = rhor - 1.0
x1 = (Tr_inv - 1.0)
x12 = x1*x1
tot1 = (x0*(x0*(x0*(x0*(x0*(x1*(x1*(0.012913842*x12 - 0.0205938816) - 0.00719201245) + 0.00609859258)
+ x1*(x1*(0.275418278 - 0.19268305*x12) + 0.0832827019) - 0.0504123634)
+ x1*(x1*(x1*(1.1168348*x1 + 0.0716373224) - 1.40944978) - 0.463045512) + 0.102997357)
+ x1*(x1*(x1*(-3.18369245*x1 - 0.621178141) + 3.55777244) + 1.53616167) + 0.111443906)
+ x1*(x1*(x1*(4.57586331*x1 + 1.60812989) - 4.54580785) - 2.78843778) - 0.646013523)
+ x1*(x1*(x1*(-2.720337*x1 - 1.21051378) + 2.19650529) + 2.33771842) + 1.60397357)
lambda1 = exp(rhor*tot1)
if Cp is not None and Cv is not None and mu is not None and drho_dP is not None:
Cpr = Cp*0.0021667624917378636 #1/461.51805 # J/kg/K
if Cpr < 0.0 or Cpr > 1E13:
Cpr = 1E13
Cp = Cpr*461.51805 # This is correct
mur = mu*1E6
kappa_inv = Cv/Cp
Gamma = 177.8514
qd = 2500000000.0#(0.4E-9)**-1
# nu = 0.630
xi0 = 0.13E-9
# gamma = 1.239
# Gamma0 = 0.06
TRC = 1.5
zeta_drho_dP = drho_dP*68521.73913043478#22.064E6/322.0
if drho_dP_Tr is None:
if rhor <= 0.310559006:
tot1 = (rhor*(rhor*(rhor*(rhor*(1.97815050331519*rhor + 10.2631854662709) - 2.27492629730878)
+ 3.39624167361325) - 5.61149954923348) + 6.53786807199516)
elif rhor <= 0.776397516:
tot1 = (rhor*(rhor*(rhor*(rhor*(12.1358413791395 - 5.54349664571295*rhor) - 9.82240510197603)
+ 8.08379285492595) - 6.30816983387575) + 6.52717759281799)
elif rhor <= 1.242236025:
tot1 = (rhor*(rhor*(rhor*(rhor*(9.19494865194302 - 2.16866274479712*rhor) - 12.033872950579)
+ 8.91990208918795) - 3.96415689925446) + 5.35500529896124)
elif rhor <= 1.863354037:
tot1 = (rhor*(rhor*(rhor*(rhor*(6.1678099993336 - 0.965458722086812*rhor) - 11.0321960061126)
+ 8.93237374861479) + 0.464621290821181) + 1.55225959906681)
else:
tot1 = (rhor*(rhor*(rhor*(rhor*(4.66861294457414 - 0.503243546373828*rhor) - 10.325505114704)
+ 9.8895256507892) + 0.595748562571649) + 1.11999926419994)
"""Original code:
zeta_drho_dP_Tr = 1./sum([Aijs[i][j]*rhor**i for i in range(6)])
"""
zeta_drho_dP_Tr = 1./tot1
else:
zeta_drho_dP_Tr = drho_dP_Tr*68521.73913043478#22.064E6/322.0
dchi = rhor*(zeta_drho_dP - zeta_drho_dP_Tr*TRC*Tr_inv)
if dchi < 0.0:
xi = 0.0
else:
# 16.666666666666668 = 1.0/Gamma0
xi = xi0*(dchi*16.666666666666668)**0.5084745762711864#(nu/gamma)
if xi < 0.0 or xi > 1E4:
xi = 1E4
y = qd*xi
if y < 1.2E-7:
Z_y = 0.0
else:
y_inv = 1.0 / y
Z_y = 2.*pi_inv*y_inv*(((1.0 - kappa_inv)*atan(y) + kappa_inv*y)
- (1.0 - exp(-1.0/(y_inv + y*y/(3.0*rhor*rhor)))))
lambda2 = Gamma*rhor*Cpr*Tr/mur*Z_y
else:
lambda2 = 0.0
k = (lambda0*lambda1 + lambda2)*1e-3
return k
[docs]def k_air_lemmon(T, rho, Cp=None, Cv=None, drho_dP=None, drho_dP_Tr=None, mu=None):
r'''Calculate the thermal conductivity of air using the Lemmon and Jacobsen
(2004) [1]_ formulation. The critical enhancement term is ignored unless
all the rquired parameters for it are provided.
.. math::
\lambda = \lambda^0(T) + \lambda^r(\tau, \delta) + \lambda^c(\tau, \delta)
.. math::
\lambda^0 = N_1\left[\frac{\eta^0(T)}{1 \mu \text{Pa}\cdot \text{s}}
\right] + N_2\tau^{t_2} + N_3\tau^{t_3}
.. math::
\lambda^r = \sum_{i=4}^n N_i \tau^{t_i} \delta^{d_i} \exp(-\gamma_i
\delta^{l_i})
.. math::
\lambda^c = \rho C_p \frac{kR_0 T}{6\pi\xi\cdot \eta(T, \rho)}\left(
\tilde \Omega -\tilde \Omega_0\right)
.. math::
\tilde \Omega = \frac{2}{\pi}\left[
\left(\frac{C_p - C_v}{C_p}\right)\tan^{-1} (\xi/q_D) + \frac{C_v}
{C_p}(\xi/q_D) \right]
.. math::
\tilde \Omega_0 = \frac{2}{\pi}\left\{1 - \exp\left[\frac{-1}{q_D/\xi
+ 1/3(\xi/q_D)^2(\rho_c/\rho)^2} \right] \right\}
.. math::
\xi = \xi_0 \left[\frac{\tilde \chi(T, \rho) - \tilde \chi(T_{ref},
\rho)\frac{T_{ref}}{T}}{\Gamma} \right]^{\nu/\gamma}
.. math::
\tilde \chi(T, \rho) = \frac{P_c \rho}{\rho_c^2} \left(\frac{\partial
\rho}{\partial P} \right)_{T}
Parameters
----------
T : float
Temperature air [K]
rho : float
Molar density of air [mol/m^3]
Cp : float, optional
Molar constant pressure heat capacity of air, [J/mol/K]
Cv : float, optional
Molar constant volume heat capacity of air, [J/mol/K]
drho_dP : float, optional
Partial derivative of density with respect to pressure at constant
temperature, [mol/m^3/Pa]
drho_dP_Tr : float, optional
Partial derivative of density with respect to pressure at constant
temperature (at the reference temperature (265.262 K) and the actual
density of air), [mol/m^3/Pa]
mu : float, optional
Viscosity of air, [Pa*s]
Returns
-------
k : float
Thermal condiuctivity of air, [W/m/K]
Notes
-----
The constnts are as follows:
Ni = [1.308, 1.405, -1.036, 8.743, 14.76, -16.62, 3.793, -6.142, -0.3778]
ti = [None, -1.1, -0.3, 0.1, 0.0, 0.5, 2.7, 0.3, 1.3]
di = [None, None, None, 1, 2, 3, 7, 7, 11]
li = [None, None, None, 0, 0, 2, 2, 2, 2]
gammai = [None, None, None, 0, 0, 1, 1, 1, 1]
R0 = 1.01; Pc = 3.78502E6 Pa; xi0 = 0.11E-9 nm; qd = 0.31E-9 nm;
Tc = 132.6312 K (actually the maxcondentherm); T_ref = 265.262 (2Tc
rounded differently); rhoc = 10447.7 mol/m^3 (actually the maxcondentherm);
k = 1.380658E-23 J/K; nu = 0.63 and gamma = 1.2415, sigma = 0.36,
MW = 28.9586 g/mol.
Examples
--------
Basic calculation at 300 K and approximately 1 bar:
>>> k_air_lemmon(300, 40.0)
0.0263839695044
Calculation near critical point:
>>> k_air_lemmon(132.64, 10400, 2137.078854678728, 35.24316159996235, 0.07417878614315769, 0.00035919027241528256, 1.7762253265868595e-05)
0.07562307234760
References
----------
.. [1] Lemmon, E. W., and R. T. Jacobsen. "Viscosity and Thermal
Conductivity Equations for Nitrogen, Oxygen, Argon, and Air."
International Journal of Thermophysics 25, no. 1 (January 1, 2004):
21-69. https://doi.org/10.1023/B:IJOT.0000022327.04529.f3.
'''
R0 = 1.01
Pc = 3.78502E6
xi0 = 0.11E-9
qd = 0.31E-9
# Gamma = 0.055
Tc = 132.6312 # K, maxcondentherm actually
T_ref = 265.262 # Tc*2 but rounded differently
rhoc = 10447.7
rhoc2 = rhoc*rhoc
qd_inv = 3225806451.612903 # 10.31E-9
gamma_inv = 18.181818181818183 # 1/.055
tau = Tc/T
tau_10 = tau**0.1
tau2_10 = tau_10*tau_10
tau3_10 = tau_10*tau2_10
tau12_10 = tau3_10*tau3_10
tau12_10 *= tau12_10
tau24_10 = tau12_10*tau12_10
delta = rho*9.571484632981421e-05 # 9.57...E-5 = 1/10447.7
Ts = T*0.00968054211035818 # 1/e_k
lnTs = log(Ts)
Omega_inv = exp(-0.431 - lnTs*(lnTs*(lnTs*(0.005341 - 0.00331*lnTs) + 0.08406) - 0.4623))
#12.7658... = 0.0266958*sqrt(28.9586)/(0.360*0.360)*sqrt(132.6312)
eta0 = 12.765845058845755*Omega_inv/(tau2_10*tau3_10)
k0 = 1.308*eta0 + 1.405/(tau*tau_10) - 1.036/tau3_10
# kr = 0.0
# for i in range(3, 9):
# kr += Ni[i]*tau**ti[i]*delta**di[i]*exp(-gammai[i]*delta**li[i])
delta2 = delta*delta
delta3 = delta*delta2
delta4 = delta*delta3
kr = (8.743*delta*tau_10 + 14.76*delta2 - exp(-delta2)*(16.62*delta3*tau3_10*tau2_10
+ delta3*delta4*(0.3778*delta4*tau_10*tau12_10 + tau3_10*(6.142 - 3.793*tau24_10))))
if Cp is not None and Cv is not None and mu is not None and drho_dP is not None and drho_dP_Tr is not None:
x2 = Pc*rho/rhoc2
xi_bar = x2*drho_dP
xi_bar_ref = x2*drho_dP_Tr
dchi = (xi_bar - xi_bar_ref*T_ref/T)
if dchi < 0.0:
kc = 0.0
else:
xi = xi0*(dchi*gamma_inv)**0.5074506645187273# .50745... = (0.63/1.2415)
if xi < 0.0:
kc = 0.0
else:
xi_qd = xi*qd_inv
term0 = qd/xi + (1.0/3.0)*xi_qd*xi_qd*(rhoc*rhoc/(rho*rho))
Omega_bar0 = 2.0*pi_inv*(1.0 - exp(-1.0/term0))
Omega_bar = 2.0*pi_inv*((Cp - Cv)/Cp*atan(xi_qd) + Cv/Cp*xi_qd)
k = 1.380658E-23 # J/K
# Mu should still be in Pa*s
kc = rho*Cp*k*R0*T/(6.0*pi*xi*mu)*(Omega_bar - Omega_bar0)
kc *= 1e3 # Convert to mW/m/K, same as others
return (k0 + kr + kc)*1e-3
return (k0 + kr)*1e-3
### Purely CSP Methods - Liquids
[docs]def Sheffy_Johnson(T, MW, Tm):
r'''Calculate the thermal conductivity of a liquid as a function of
temperature using the Sheffy-Johnson (1961) method. Requires
Temperature, molecular weight, and melting point.
.. math::
k = 1.951 \frac{1-0.00126(T-T_m)}{T_m^{0.216}MW^{0.3}}
Parameters
----------
T : float
Temperature of the fluid [K]
MW : float
Molecular weight of the fluid [g/mol]
Tm : float
Melting point of the fluid [K]
Returns
-------
kl : float
Thermal conductivity of the fluid, W/m/k
Notes
-----
The origin of this equation has been challenging to trace. It is
presently unknown, and untested.
Examples
--------
>>> Sheffy_Johnson(300, 47, 280)
0.17740150413112193
References
----------
.. [1] Scheffy, W. J., and E. F. Johnson. "Thermal Conductivities of
Liquids at High Temperatures." Journal of Chemical & Engineering Data
6, no. 2 (April 1, 1961): 245-49. doi:10.1021/je60010a019
'''
return 1.951*(1.0 - 0.00126*(T - Tm))*Tm**-0.216*MW**-0.3
[docs]def Sato_Riedel(T, MW, Tb, Tc):
r'''Calculate the thermal conductivity of a liquid as a function of
temperature using the CSP method of Sato-Riedel [1]_, [2]_, published in
Reid [3]_. Requires temperature, molecular weight, and boiling and critical
temperatures.
.. math::
k = \frac{1.1053}{\sqrt{MW}}\frac{3+20(1-T_r)^{2/3}}
{3+20(1-T_{br})^{2/3}}
Parameters
----------
T : float
Temperature of the fluid [K]
MW : float
Molecular weight of the fluid [g/mol]
Tb : float
Boiling temperature of the fluid [K]
Tc : float
Critical temperature of the fluid [K]
Returns
-------
kl : float
Estimated liquid thermal conductivity [W/m/k]
Notes
-----
This equation has a complicated history. It is proposed by Reid [3]_.
Limited accuracy should be expected. Uncheecked.
Examples
--------
>>> Sato_Riedel(300, 47, 390, 520)
0.21037692461337687
References
----------
.. [1] Riedel, L.: Chem. Ing. Tech., 21, 349 (1949); 23: 59, 321, 465 (1951)
.. [2] Maejima, T., private communication, 1973
.. [3] Properties of Gases and Liquids", 3rd Ed., McGraw-Hill, 1977
'''
Tr = T/Tc
Tbr = Tb/Tc
Tr_term = 1.0 - Tr
if Tr_term < 0.0:
Tr_term = 0.0
return 1.1053*(3. + 20.*(Tr_term)**(2.0/3.0))*MW**-0.5/(3.0 + 20.0*(1.0 - Tbr)**(2.0/3.))
[docs]def Lakshmi_Prasad(T, MW):
r'''Estimates thermal conductivity of pure liquids as a function of
temperature using a reference fluid approach. Low accuracy but quick.
Developed using several organic fluids.
.. math::
\lambda = 0.0655-0.0005T + \frac{1.3855-0.00197T}{MW^{0.5}}
Parameters
----------
T : float
Temperature of the fluid [K]
MW : float
Molecular weight of the fluid [g/mol]
Returns
-------
kl : float
Estimated liquid thermal conductivity [W/m/k]
Notes
-----
This equation returns negative numbers at high T sometimes.
This equation is one of those implemented by DDBST.
If this results in a negative thermal conductivity, no value is returned.
Examples
--------
>>> Lakshmi_Prasad(273.15, 100)
0.013664450
References
----------
.. [1] Lakshmi, D. S., and D. H. L. Prasad. "A Rapid Estimation Method for
Thermal Conductivity of Pure Liquids." The Chemical Engineering Journal
48, no. 3 (April 1992): 211-14. doi:10.1016/0300-9467(92)80037-B
'''
return 0.0655 - 0.0005*T + (1.3855 - 0.00197*T)/sqrt(MW)
[docs]def Gharagheizi_liquid(T, MW, Tb, Pc, omega):
r'''Estimates the thermal conductivity of a liquid as a function of
temperature using the CSP method of Gharagheizi [1]_. A convoluted
method claiming high-accuracy and using only statistically significant
variable following analalysis.
Requires temperature, molecular weight, boiling temperature and critical
pressure and acentric factor.
.. math::
k = 10^{-4}\left[10\omega + 2P_c-2T+4+1.908(T_b+\frac{1.009B^2}{MW^2})
+\frac{3.9287MW^4}{B^4}+\frac{A}{B^8}\right]
.. math::
A = 3.8588MW^8(1.0045B+6.5152MW-8.9756)
.. math::
B = 16.0407MW+2T_b-27.9074
Parameters
----------
T : float
Temperature of the fluid [K]
MW : float
Molecular weight of the fluid [g/mol]
Tb : float
Boiling temperature of the fluid [K]
Pc : float
Critical pressure of the fluid [Pa]
omega : float
Acentric factor of the fluid [-]
Returns
-------
kl : float
Estimated liquid thermal conductivity [W/m/k]
Notes
-----
Pressure is internally converted into bar, as used in the original equation.
This equation was derived with 19000 points representing 1640 unique compounds.
Examples
--------
>>> Gharagheizi_liquid(300, 40, 350, 1E6, 0.27)
0.2171113029534838
References
----------
.. [1] Gharagheizi, Farhad, Poorandokht Ilani-Kashkouli, Mehdi Sattari,
Amir H. Mohammadi, Deresh Ramjugernath, and Dominique Richon.
"Development of a General Model for Determination of Thermal
Conductivity of Liquid Chemical Compounds at Atmospheric Pressure."
AIChE Journal 59, no. 5 (May 1, 2013): 1702-8. doi:10.1002/aic.13938
'''
M2 = MW*MW
M4 = M2*M2
Pc = Pc*1E-5
B = 16.0407*MW + 2.*Tb - 27.9074
A = 3.8588*M4*M4*(1.0045*B + 6.5152*MW - 8.9756)
B_inv4 = 1.0/(B*B*B*B)
kl = 1E-4*(10.*omega + 2.*(Pc - T) + 4. + 1.908*(Tb + 1.009*B*B/(M2))
+ 3.9287*M4*B_inv4 + A*B_inv4*B_inv4)
return kl
[docs]def Nicola_original(T, MW, Tc, omega, Hfus):
r'''Estimates the thermal conductivity of a liquid as a function of
temperature using the CSP method of Nicola [1]_. A simpler but long
method claiming high-accuracy and using only statistically significant
variable following analalysis.
Requires temperature, molecular weight, critical temperature, acentric
factor and the heat of vaporization.
.. math::
\frac{\lambda}{1 \text{Wm/K}}=-0.5694-0.1436T_r+5.4893\times10^{-10}
\frac{\Delta_{fus}H}{\text{kmol/J}}+0.0508\omega +
\left(\frac{1 \text{kg/kmol}}{MW}\right)^{0.0622}
Parameters
----------
T : float
Temperature of the fluid [K]
MW : float
Molecular weight of the fluid [g/mol]
Tc : float
Critical temperature of the fluid [K]
omega : float
Acentric factor of the fluid [-]
Hfus : float
Heat of fusion of the fluid [J/mol]
Returns
-------
kl : float
Estimated liquid thermal conductivity [W/m/k]
Notes
-----
A weird statistical correlation. Recent and yet to be reviewed.
This correlation has been superceded by the author's later work.
Hfus is internally converted to be in J/kmol.
Examples
--------
>>> Nicola_original(300, 142.3, 611.7, 0.49, 201853)
0.2305018632230984
References
----------
.. [1] Nicola, Giovanni Di, Eleonora Ciarrocchi, Mariano Pierantozzi, and
Roman Stryjek. "A New Equation for the Thermal Conductivity of Organic
Compounds." Journal of Thermal Analysis and Calorimetry 116, no. 1
(April 1, 2014): 135-40. doi:10.1007/s10973-013-3422-7
'''
Tr = T/Tc
Hfus = Hfus*1000.0
return -0.5694 - 0.1436*Tr + 5.4893E-10*Hfus + 0.0508*omega + MW**-0.0622
[docs]def Nicola(T, MW, Tc, Pc, omega):
r'''Estimates the thermal conductivity of a liquid as a function of
temperature using the CSP method of [1]_. A statistically derived
equation using any correlated terms.
Requires temperature, molecular weight, critical temperature and pressure,
and acentric factor.
.. math::
\frac{\lambda}{0.5147 W/m/K} = -0.2537T_r+\frac{0.0017Pc}{\text{bar}}
+0.1501 \omega + \left(\frac{1}{MW}\right)^{-0.2999}
Parameters
----------
T : float
Temperature of the fluid [K]
MW : float
Molecular weight of the fluid [g/mol]
Tc : float
Critical temperature of the fluid [K]
Pc : float
Critical pressure of the fluid [Pa]
omega : float
Acentric factor of the fluid [-]
Returns
-------
kl : float
Estimated liquid thermal conductivity [W/m/k]
Notes
-----
A statistical correlation. A revision of an original correlation.
Examples
--------
>>> Nicola(300, 142.3, 611.7, 2110000.0, 0.49)
0.10863821554584034
References
----------
.. [1] Di Nicola, Giovanni, Eleonora Ciarrocchi, Gianluca Coccia, and
Mariano Pierantozzi. "Correlations of Thermal Conductivity for
Liquid Refrigerants at Atmospheric Pressure or near Saturation."
International Journal of Refrigeration. 2014.
doi:10.1016/j.ijrefrig.2014.06.003
'''
return 0.5147*(-0.2537*T/Tc + 0.0017E-5*Pc + 0.1501*omega + MW**-0.2999)
[docs]def Bahadori_liquid(T, MW):
r'''Estimates the thermal conductivity of parafin liquid hydrocarbons.
Fits their data well, and is useful as only MW is required.
X is the Molecular weight, and Y the temperature.
.. math::
K = a + bY + CY^2 + dY^3
.. math::
a = A_1 + B_1 X + C_1 X^2 + D_1 X^3
.. math::
b = A_2 + B_2 X + C_2 X^2 + D_2 X^3
.. math::
c = A_3 + B_3 X + C_3 X^2 + D_3 X^3
.. math::
d = A_4 + B_4 X + C_4 X^2 + D_4 X^3
Parameters
----------
T : float
Temperature of the fluid [K]
MW : float
Molecular weight of the fluid [g/mol]
Returns
-------
kl : float
Estimated liquid thermal conductivity [W/m/k]
Notes
-----
The accuracy of this equation has not been reviewed.
Examples
--------
Data point from [1]_.
>>> Bahadori_liquid(273.15, 170)
0.1427427810827268
References
----------
.. [1] Bahadori, Alireza, and Saeid Mokhatab. "Estimating Thermal
Conductivity of Hydrocarbons." Chemical Engineering 115, no. 13
(December 2008): 52-54
'''
A = (-6.48326E-2, 2.715015E-3, -1.08580E-5, 9.853917E-9)
B = (1.565612E-2, -1.55833E-4, 5.051114E-7, -4.68030E-10)
C = (-1.80304E-4, 1.758693E-6, -5.55224E-9, 5.201365E-12)
D = (5.880443E-7, -5.65898E-9, 1.764384E-11, -1.65944E-14)
X, Y = MW, T
a = A[0] + X*(B[0] + X*(C[0] + D[0]*X))
b = A[1] + X*(B[1] + X*(C[1] + D[1]*X))
c = A[2] + X*(B[2] + X*(C[2] + D[2]*X))
d = A[3] + X*(B[3] + X*(C[3] + D[3]*X))
return a + Y*(b + Y*(c + d*Y))
[docs]def kl_Mersmann_Kind(T, MW, Tc, Vc, na):
r'''Estimates the thermal conductivity of organic liquid substances
according to the method of [1]_.
.. math::
\lambda^* = \frac{\lambda\cdot V_c^{2/3}\cdot T_c\cdot \text{MW}^{0.5}}
{(k\cdot T_c)^{1.5}\cdot N_A^{7/6}}
.. math::
\lambda^* = \frac{2}{3}\left(n_a + 40\sqrt{1-T_r}\right)
Parameters
----------
T : float
Temperature of the fluid [K]
MW : float
Molecular weight of the fluid [g/mol]
Tc : float
Critical temperature of the fluid [K]
Vc : float
Critical volume of the fluid [m^3/mol]
na : float
Number of atoms in the molecule, [-]
Returns
-------
kl : float
Estimated liquid thermal conductivity [W/m/k]
Notes
-----
In the equation, all quantities must be in SI units but N_A is in a kmol
basis and Vc is in units of (m^3/kmol); this is converted internally.
Examples
--------
Dodecane at 400 K:
>>> kl_Mersmann_Kind(400, 170.33484, 658.0,
... 0.000754, 38)
0.0895271829899285
References
----------
.. [1] Mersmann, Alfons, and Matthias Kind. "Prediction of Mechanical and
Thermal Properties of Pure Liquids, of Critical Data, and of Vapor
Pressure." Industrial & Engineering Chemistry Research, January 31,
2017. https://doi.org/10.1021/acs.iecr.6b04323.
'''
lambda_star = (2/3.)*(na + 40.*sqrt(1. - T/Tc))
Vc = Vc*1000.0 # m^3/mol to m^3/kmol
N_A2 = N_A*1000.0 # Their avogadro's constant is per kmol
kTc = k*Tc
kl = lambda_star*kTc*sqrt(kTc/MW)*N_A2**(7.0/6.)*Vc**(-2.0/3.)/Tc
return kl
### Thermal Conductivity of Dense Liquids
[docs]def DIPPR9G(T, P, Tc, Pc, kl):
r'''Adjustes for pressure the thermal conductivity of a liquid using an
emperical formula based on [1]_, but as given in [2]_.
.. math::
k = k^* \left[ 0.98 + 0.0079 P_r T_r^{1.4} + 0.63 T_r^{1.2}
\left( \frac{P_r}{30 + P_r}\right)\right]
Parameters
----------
T : float
Temperature of fluid [K]
P : float
Pressure of fluid [Pa]
Tc : float
Critical point of fluid [K]
Pc : float
Critical pressure of the fluid [Pa]
kl : float
Thermal conductivity of liquid at 1 atm or saturation, [W/m/K]
Returns
-------
kl_dense : float
Thermal conductivity of liquid at P, [W/m/K]
Notes
-----
This equation is entrely dimensionless; all dimensions cancel.
The original source has not been reviewed.
This is DIPPR Procedure 9G: Method for the Thermal Conductivity of Pure
Nonhydrocarbon Liquids at High Pressures
Examples
--------
From [2]_, for butyl acetate.
>>> DIPPR9G(515.05, 3.92E7, 579.15, 3.212E6, 7.085E-2)
0.0864419738671184
References
----------
.. [1] Missenard, F. A., Thermal Conductivity of Organic Liquids of a
Series or a Group of Liquids , Rev. Gen.Thermodyn., 101 649 (1970).
.. [2] Danner, Ronald P, and Design Institute for Physical Property Data.
Manual for Predicting Chemical Process Design Data. New York, N.Y, 1982.
'''
Tr = T/Tc
Pr = P/Pc
Tr_2_10 = Tr**(0.2)
Tr_12_10 = Tr_2_10*Tr_2_10*Tr_2_10
Tr_12_10 *= Tr_12_10
return kl*(0.98 + Tr_12_10*(0.0079*Pr*Tr_2_10 + 0.63*(Pr/(30. + Pr))))
Trs_Missenard = [0.8, 0.7, 0.6, 0.5]
Prs_Missenard = [1, 5, 10, 50, 100, 200]
Qs_Missenard = [[0.036, 0.038, 0.038, 0.038, 0.038, 0.038],
[0.018, 0.025, 0.027, 0.031, 0.032, 0.032],
[0.015, 0.020, 0.022, 0.024, 0.025, 0.025],
[0.012, 0.0165, 0.017, 0.019, 0.020, 0.020]]
# tck obtained with interp1d's regrid_smth
Missenard_tck = implementation_optimize_tck([[1.0, 1.0, 5.0, 10.0, 50.0, 100.0, 200.0, 200.0],
[0.5, 0.5, 0.6, 0.7, 0.8, 0.8],
[0.012, 0.015, 0.018, 0.036, 0.0165, 0.02,
0.025, 0.038, 0.017, 0.022, 0.027, 0.038,
0.019, 0.024, 0.031, 0.038, 0.02, 0.025,
0.032, 0.038, 0.02, 0.025, 0.032, 0.038],
1,1])
[docs]def Missenard(T, P, Tc, Pc, kl):
r'''Adjustes for pressure the thermal conductivity of a liquid using an
emperical formula based on [1]_, but as given in [2]_.
.. math::
\frac{k}{k^*} = 1 + Q P_r^{0.7}
Parameters
----------
T : float
Temperature of fluid [K]
P : float
Pressure of fluid [Pa]
Tc : float
Critical point of fluid [K]
Pc : float
Critical pressure of the fluid [Pa]
kl : float
Thermal conductivity of liquid at 1 atm or saturation, [W/m/K]
Returns
-------
kl_dense : float
Thermal conductivity of liquid at P, [W/m/K]
Notes
-----
This equation is entirely dimensionless; all dimensions cancel.
An interpolation routine is used here from tabulated values of Q.
The original source has not been reviewed.
Examples
--------
Example from [2]_, toluene; matches.
>>> Missenard(304., 6330E5, 591.8, 41E5, 0.129)
0.2198375777069657
References
----------
.. [1] Missenard, F. A., Thermal Conductivity of Organic Liquids of a
Series or a Group of Liquids , Rev. Gen.Thermodyn., 101 649 (1970).
.. [2] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition.
New York: McGraw-Hill Professional, 2000.
'''
Tr = T/Tc
Pr = P/Pc
Q = float(bisplev(Pr, Tr, Missenard_tck))
return kl*(1. + Q*Pr**0.7)
### Thermal conductivity of liquid mixtures
[docs]def DIPPR9H(ws, ks):
r'''Calculates thermal conductivity of a liquid mixture according to
mixing rules in [1]_ and also in [2]_.
.. math::
\lambda_m = \left( \sum_i w_i \lambda_i^{-2}\right)^{-1/2}
This is also called the Vredeveld (1973) equation. A review in [3]_ finds
this the best model on average. However, they did caution that in some
cases a linear mole-fraction mixing rule performs better. This equation
according to Poling [1]_ should not be used if some components have
thermal conductivities more than twice other components. They also say this
should not be used with water.
Parameters
----------
ws : float
Mass fractions of components
ks : float
Liquid thermal conductivites of all components, [W/m/K]
Returns
-------
kl : float
Thermal conductivity of liquid mixture, [W/m/K]
Notes
-----
This equation is entirely dimensionless; all dimensions cancel.
The example is from [2]_; all results agree.
The original source has not been reviewed.
DIPPR Procedure 9H: Method for the Thermal Conductivity of Nonaqueous Liquid Mixtures
Average deviations of 3%. for 118 nonaqueous systems with 817 data points.
Max deviation 20%. According to DIPPR.
In some sources, this equation is given with the molecular weights included:
.. math::
\lambda_m^{-2} = \frac{\sum_i z_i {MW}_i \lambda_i^{-2}}
{\sum_i z_i {MW}_i}
Examples
--------
>>> DIPPR9H([0.258, 0.742], [0.1692, 0.1528])
0.15657104706719646
References
----------
.. [1] Reid, Robert C.; Prausnitz, John M.; Poling, Bruce E. The
Properties of Gases and Liquids. McGraw-Hill Companies, 1987.
.. [2] Danner, Ronald P, and Design Institute for Physical Property Data.
Manual for Predicting Chemical Process Design Data. New York, N.Y, 1982.
.. [3] Focke, Walter W. "Correlating Thermal-Conductivity Data for Ternary
Liquid Mixtures." International Journal of Thermophysics 29, no. 4
(August 1, 2008): 1342-60. https://doi.org/10.1007/s10765-008-0465-2.
'''
kl = 0.0
for i in range(len(ws)):
kl += ws[i]/(ks[i]*ks[i])
return 1.0/sqrt(kl)
[docs]def DIPPR9I(zs, Vms, ks):
r'''Calculates thermal conductivity of a liquid mixture according to
mixing rules in [1]_. This is recommended in [2]_ for aqueous and
nonaqueous systems.
.. math::
k_{mix} = \sum_{i}\sum_j \phi_i\phi_j k_{i,j}
.. math::
k_{i,j} = \frac{2}{\frac{1}{k_i} + \frac{1}{k_j}}
.. math::
\phi_i = \frac{z_i V_{m,i}}{\sum_j^n z_j V_{m,j}}
Parameters
----------
zs : list[float]
Mole fractions of components, [-]
Vms : list[float]
Molar volumes of each component, [m^3/mol]
ks : float
Liquid thermal conductivites of all components, [W/m/K]
Returns
-------
kl : float
Thermal conductivity of liquid mixture, [W/m/K]
Notes
-----
This equation is entirely dimensionless; all dimensions cancel.
The example is from [2]_; all results agree.
[2]_ found average deviations of 4-6% for 118 nonaqueous systems
and 15 aqueous systems at atmospheric pressure, with a maximum deviation of
33%.
The computational complexity here is N^2, with a division present in the
inner loop.
Examples
--------
>>> DIPPR9I(zs=[.682, .318], Vms=[1.723e-2, 7.338e-2], ks=[.6037, .1628])
0.25397430656658937
References
----------
.. [1] Li, C. C. "Thermal Conductivity of Liquid Mixtures." AIChE Journal
22, no. 5 (1976): 927-30. https://doi.org/10.1002/aic.690220520.
.. [2] Danner, Ronald P, and Design Institute for Physical Property Data.
Manual for Predicting Chemical Process Design Data. New York, N.Y, 1982.
'''
N = len(zs)
k = 0.0
# Precomputation
ks_inv = [0.0]*N
phis = [0.0]*N
tot = 0.0
for i in range(N):
val = zs[i]*Vms[i]
phis[i] = val
tot += val
tot = 1.0/tot
for i in range(N):
phis[i] *= tot
# Compute the diagonal and store ks_inv
for i in range(N):
k_inv = 1.0/ks[i]
k += phis[i]*phis[i]*ks[i]
ks_inv[i] = k_inv
# Main loop
main_k_sum = 0.0
for i in range(N):
tot = 0.0
for j in range(i):
tot += phis[j]/(ks_inv[i] + ks_inv[j])
main_k_sum += tot*phis[i]
# factored out 4 - 2 from inner loop, two from symmetry
k += 4.0*main_k_sum
return k
[docs]def Filippov(ws, ks):
r'''Calculates thermal conductivity of a binary liquid mixture according to
mixing rules in [2]_ as found in [1]_.
.. math::
\lambda_m = w_1 \lambda_1 + w_2\lambda_2
- 0.72 w_1 w_2(\lambda_2-\lambda_1)
Parameters
----------
ws : float
Mass fractions of components
ks : float
Liquid thermal conductivites of all components, [W/m/K]
Returns
-------
kl : float
Thermal conductivity of liquid mixture, [W/m/K]
Notes
-----
This equation is entirely dimensionless; all dimensions cancel.
The original source has not been reviewed.
Only useful for binary mixtures.
Examples
--------
>>> Filippov([0.258, 0.742], [0.1692, 0.1528])
0.15929167628799998
References
----------
.. [1] Reid, Robert C.; Prausnitz, John M.; Poling, Bruce E. The
Properties of Gases and Liquids. McGraw-Hill Companies, 1987.
.. [2] Filippov, L. P.: Vest. Mosk. Univ., Ser. Fiz. Mat. Estestv. Nauk,
(8I0E): 67-69A955); Chem. Abstr., 50: 8276 A956).
Filippov, L. P., and N. S. Novoselova: Vestn. Mosk. Univ., Ser. F
iz. Mat. Estestv.Nauk, CI0B): 37-40A955); Chem. Abstr., 49: 11366 A955).
'''
len_ks = len(ks)
if len_ks != len(ws) or len_ks != 2:
raise ValueError("Filippov method is only defined for mixtures of two components")
return ws[0]*ks[0] + ws[1]*ks[1] - 0.72*ws[0]*ws[1]*(ks[1] - ks[0])
### Thermal Conductivity of Gases
[docs]def Eucken(MW, Cvm, mu):
r'''Estimates the thermal conductivity of a gas as a function of
temperature using the CSP method of Eucken [1]_.
.. math::
\frac{\lambda MW}{\eta C_v} = 1 + \frac{9/4}{C_v/R}
Parameters
----------
MW : float
Molecular weight of the gas [g/mol]
Cvm : float
Molar contant volume heat capacity of the gas [J/mol/K]
mu : float
Gas viscosity [Pa*s]
Returns
-------
kg : float
Estimated gas thermal conductivity [W/m/k]
Notes
-----
Temperature dependence is introduced via heat capacity and viscosity.
A theoretical equation. No original author located.
MW internally converted to kg/g-mol.
Examples
--------
2-methylbutane at low pressure, 373.15 K. Mathes calculation in [1]_.
>>> Eucken(MW=72.151, Cvm=135.9, mu=8.77E-6)
0.018792645058456698
References
----------
.. [1] Reid, Robert C.; Prausnitz, John M.; Poling, Bruce E.
Properties of Gases and Liquids. McGraw-Hill Companies, 1987.
'''
MW = MW*1e-3
return (1. + 9.0/4.0*R/Cvm)*mu*Cvm/MW
[docs]def Eucken_modified(MW, Cvm, mu):
r'''Estimates the thermal conductivity of a gas as a function of
temperature using the Modified CSP method of Eucken [1]_.
.. math::
\frac{\lambda MW}{\eta C_v} = 1.32 + \frac{1.77}{C_v/R}
Parameters
----------
MW : float
Molecular weight of the gas [g/mol]
Cvm : float
Molar contant volume heat capacity of the gas [J/mol/K]
mu : float
Gas viscosity [Pa*s]
Returns
-------
kg : float
Estimated gas thermal conductivity [W/m/k]
Notes
-----
Temperature dependence is introduced via heat capacity and viscosity.
A theoretical equation. No original author located.
MW internally converted to kg/g-mol.
Examples
--------
2-methylbutane at low pressure, 373.15 K. Mathes calculation in [1]_.
>>> Eucken_modified(MW=72.151, Cvm=135.9, mu=8.77E-6)
0.02359353760551249
References
----------
.. [1] Reid, Robert C.; Prausnitz, John M.; Poling, Bruce E.
Properties of Gases and Liquids. McGraw-Hill Companies, 1987.
'''
MW = MW*1e-3
return (1.32 + 1.77*R/Cvm)*mu*Cvm/MW
[docs]def DIPPR9B(T, MW, Cvm, mu, Tc=None, chemtype=None):
r'''Calculates the thermal conductivity of a gas using one of several
emperical equations developed in [1]_, [2]_, and presented in [3]_.
For monoatomic gases:
.. math::
k = 2.5 \frac{\eta C_v}{MW}
For linear molecules:
.. math::
k = \frac{\eta}{MW} \left( 1.30 C_v + 14644.00 - \frac{2928.80}{T_r}\right)
For nonlinear molecules:
.. math::
k = \frac{\eta}{MW}(1.15C_v + 16903.36)
Parameters
----------
T : float
Temperature of the fluid [K]
MW : float
Molwcular weight of fluid [g/mol]
Cvm : float
Molar heat capacity at constant volume of fluid, [J/mol/K]
mu : float
Viscosity of gas, [Pa*s]
Tc : float
Critical temperature of the fluid [K]
chemtype : str, optional
One of 'monoatomic', 'nonlinear', None, [-]
Returns
-------
k_g : float
Thermal conductivity of gas, [W/m/k]
Notes
-----
Tested with DIPPR values.
Cvm is internally converted to J/kmol/K.
Examples
--------
CO:
>>> DIPPR9B(200., 28.01, 20.826, 1.277E-5, 132.92, chemtype='linear')
0.01813208676438415
References
----------
.. [1] Bromley, LeRoy A., Berkeley. University of California, and U.S.
Atomic Energy Commission. Thermal Conductivity of Gases at Moderate
Pressures. UCRL;1852. Berkeley, CA: University of California Radiation
Laboratory, 1952.
.. [2] Stiel, Leonard I., and George Thodos. "The Thermal Conductivity of
Nonpolar Substances in the Dense Gaseous and Liquid Regions." AIChE
Journal 10, no. 1 (January 1, 1964): 26-30. doi:10.1002/aic.690100114
.. [3] Danner, Ronald P, and Design Institute for Physical Property Data.
Manual for Predicting Chemical Process Design Data. New York, N.Y, 1982.
'''
Cvm = Cvm*1000. # J/g/K to J/kmol/K
if chemtype == 'monoatomic':
return 2.5*mu*Cvm/MW
elif chemtype == 'nonlinear':
return mu/MW*(1.15*Cvm + 16903.36)
# elif chemtype == 'linear' or chemtype is None:
Tr = T/Tc
return mu/MW*(1.30*Cvm + 14644 - 2928.80/Tr)
[docs]def Chung(T, MW, Tc, omega, Cvm, mu):
r'''Estimates the thermal conductivity of a gas as a function of
temperature using the CSP method of Chung [1]_.
.. math::
\frac{\lambda MW}{\eta C_v} = \frac{3.75 \Psi}{C_v/R}
.. math::
\Psi = 1 + \alpha \left\{[0.215+0.28288\alpha-1.061\beta+0.26665Z]/
[0.6366+\beta Z + 1.061 \alpha \beta]\right\}
.. math::
\alpha = \frac{C_v}{R}-1.5
.. math::
\beta = 0.7862-0.7109\omega + 1.3168\omega^2
.. math::
Z=2+10.5T_r^2
Parameters
----------
T : float
Temperature of the gas [K]
MW : float
Molecular weight of the gas [g/mol]
Tc : float
Critical temperature of the gas [K]
omega : float
Acentric factor of the gas [-]
Cvm : float
Molar contant volume heat capacity of the gas [J/mol/K]
mu : float
Gas viscosity [Pa*s]
Returns
-------
kg : float
Estimated gas thermal conductivity [W/m/k]
Notes
-----
MW internally converted to kg/g-mol.
Examples
--------
2-methylbutane at low pressure, 373.15 K. Mathes calculation in [2]_.
>>> Chung(T=373.15, MW=72.151, Tc=460.4, omega=0.227, Cvm=135.9, mu=8.77E-6)
0.023015653797111124
References
----------
.. [1] Chung, Ting Horng, Lloyd L. Lee, and Kenneth E. Starling.
"Applications of Kinetic Gas Theories and Multiparameter Correlation for
Prediction of Dilute Gas Viscosity and Thermal Conductivity."
Industrial & Engineering Chemistry Fundamentals 23, no. 1
(February 1, 1984): 8-13. doi:10.1021/i100013a002
.. [2] Reid, Robert C.; Prausnitz, John M.; Poling, Bruce E.
Properties of Gases and Liquids. McGraw-Hill Companies, 1987.
'''
MW = MW*1e-3
alpha = Cvm*R_inv - 1.5
beta = 0.7862 - 0.7109*omega + 1.3168*omega*omega
Z = 2.0 + 10.5*T*T/(Tc*Tc)
psi = 1.0 + alpha*((0.215 + 0.28288*alpha - 1.061*beta + 0.26665*Z)
/(0.6366 + beta*Z + 1.061*alpha*beta))
return 3.75*psi/(Cvm*MW)*R*mu*Cvm
[docs]def Eli_Hanley(T, MW, Tc, Vc, Zc, omega, Cvm):
r'''Estimates the thermal conductivity of a gas as a function of
temperature using the reference fluid method of Eli and Hanley [1]_ as
shown in [2]_.
.. math::
\lambda = \lambda^* + \frac{\eta^*}{MW}(1.32)\left(C_v - \frac{3R}{2}\right)
.. math::
Tr = \text{min}(Tr, 2)
.. math::
\theta = 1 + (\omega-0.011)\left(0.56553 - 0.86276\ln Tr - \frac{0.69852}{Tr}\right)
.. math::
\psi = [1 + (\omega - 0.011)(0.38560 - 1.1617\ln Tr)]\frac{0.288}{Z_c}
.. math::
f = \frac{T_c}{190.4}\theta
.. math::
h = \frac{V_c}{9.92E-5}\psi
.. math::
T_0 = T/f
.. math::
\eta_0^*(T_0)= \sum_{n=1}^9 C_n T_0^{(n-4)/3}
.. math::
\theta_0 = 1944 \eta_0
.. math::
\lambda^* = \lambda_0 H
.. math::
\eta^* = \eta^*_0 H \frac{MW}{16.04}
.. math::
H = \left(\frac{16.04}{MW}\right)^{0.5}f^{0.5}/h^{2/3}
Parameters
----------
T : float
Temperature of the gas [K]
MW : float
Molecular weight of the gas [g/mol]
Tc : float
Critical temperature of the gas [K]
Vc : float
Critical volume of the gas [m^3/mol]
Zc : float
Critical compressibility of the gas []
omega : float
Acentric factor of the gas [-]
Cvm : float
Molar contant volume heat capacity of the gas [J/mol/K]
Returns
-------
kg : float
Estimated gas thermal conductivity [W/m/k]
Notes
-----
Reference fluid is Methane.
MW internally converted to kg/g-mol.
Examples
--------
2-methylbutane at low pressure, 373.15 K. Matches calculation in [2]_.
>>> Eli_Hanley(T=373.15, MW=72.151, Tc=460.4, Vc=3.06E-4, Zc=0.267,
... omega=0.227, Cvm=135.9)
0.02247951724513664
References
----------
.. [1] Ely, James F., and H. J. M. Hanley. "Prediction of Transport
Properties. 2. Thermal Conductivity of Pure Fluids and Mixtures."
Industrial & Engineering Chemistry Fundamentals 22, no. 1 (February 1,
1983): 90-97. doi:10.1021/i100009a016.
.. [2] Reid, Robert C.; Prausnitz, John M.; Poling, Bruce E.
Properties of Gases and Liquids. McGraw-Hill Companies, 1987.
'''
Tr = T/Tc
if Tr > 2.0:
Tr = 2.0
logTr = log(Tr)
theta = 1.0 + (omega - 0.011)*(0.56553 - 0.86276*logTr - 0.69852/Tr)
psi = (1.0 + (omega - 0.011)*(0.38560 - 1.1617*logTr))*0.288/Zc
f = Tc/190.4*theta
h = Vc/9.92E-5*psi
T0 = T/f
T0_third = T0**(1.0/3.0)
T0_moving = 1.0/T0
tot = (2907741.307*T0_moving + T0_third*(-3312874.033*T0_moving
+ T0_third*(1608101.838*T0_moving + T0_third*(-433190.4871*T0_moving
+ T0_third*(70624.8133*T0_moving + T0_third*(-7116.62075*T0_moving
+ T0_third*(432.51744*T0_moving + T0_third*(0.2037119479*T0_moving*T0_third
- 14.4591121*T0_moving))))))))
# Cs = [2.907741307E6, -3.312874033E6, 1.608101838E6, -4.331904871E5,
# 7.062481330E4, -7.116620750E3, 4.325174400E2, -1.445911210E1, 2.037119479E-1]
# tot = 0.0
# for i in range(9):
# tot += Cs[i]*T0_moving
# T0_moving *= T0_third
eta0 = 1e-7*tot
k0 = 1944.0*eta0
H = sqrt(f*16.04/MW)*h**(-2.0/3.)
etas = eta0*H*MW*0.06234413965087282 # /16.04
ks = k0*H
return ks + 1320.0*etas/MW*(Cvm - 1.5*R)
[docs]def Gharagheizi_gas(T, MW, Tb, Pc, omega):
r'''Estimates the thermal conductivity of a gas as a function of
temperature using the CSP method of Gharagheizi [1]_. A convoluted
method claiming high-accuracy and using only statistically significant
variable following analalysis.
Requires temperature, molecular weight, boiling temperature and critical
pressure and acentric factor.
.. math::
k = 7.9505\times 10^{-4} + 3.989\times 10^{-5} T
-5.419\times 10^-5 MW + 3.989\times 10^{-5} A
.. math::
A = \frac{\left(2\omega + T - \frac{(2\omega + 3.2825)T}{T_b} + 3.2825\right)}{0.1MP_cT}
\times (3.9752\omega + 0.1 P_c + 1.9876B + 6.5243)^2
Parameters
----------
T : float
Temperature of the fluid [K]
MW : float
Molecular weight of the fluid [g/mol]
Tb : float
Boiling temperature of the fluid [K]
Pc : float
Critical pressure of the fluid [Pa]
omega : float
Acentric factor of the fluid [-]
Returns
-------
kg : float
Estimated gas thermal conductivity [W/m/k]
Notes
-----
Pressure is internally converted into 10*kPa but author used correlation with
kPa; overall, errors have been corrected in the presentation of the formula.
This equation was derived with 15927 points and 1574 compounds.
Example value from [1]_ is the first point in the supportinf info, for CH4.
Examples
--------
>>> Gharagheizi_gas(580., 16.04246, 111.66, 4599000.0, 0.0115478000)
0.09594861261873211
References
----------
.. [1] Gharagheizi, Farhad, Poorandokht Ilani-Kashkouli, Mehdi Sattari,
Amir H. Mohammadi, Deresh Ramjugernath, and Dominique Richon.
"Development of a General Model for Determination of Thermal
Conductivity of Liquid Chemical Compounds at Atmospheric Pressure."
AIChE Journal 59, no. 5 (May 1, 2013): 1702-8. doi:10.1002/aic.13938
'''
Pc = Pc*1e-4
Tb_inv = 1.0/Tb
B = (T + (2.*omega + 2.*T - 2.*T*(2.*omega + 3.2825)*Tb_inv + 3.2825)
/(2.0*omega + T - T*(2.0*omega + 3.2825)*Tb_inv + 3.2825)
- T*(2.0*omega + 3.2825)*Tb_inv)
x0 = (3.9752*omega + 0.1*Pc + 1.9876*B + 6.5243)
A = (2.0*omega + T - T*(2.0*omega + 3.2825)*Tb_inv + 3.2825)/(0.1*MW*Pc*T) * x0*x0
return 7.9505E-4 + 3.989E-5*T - 5.419E-5*MW + 3.989E-5*A
[docs]def Bahadori_gas(T, MW):
r'''Estimates the thermal conductivity of hydrocarbons gases at low P.
Fits their data well, and is useful as only MW is required.
Y is the Molecular weight, and X the temperature.
.. math::
K = a + bY + CY^2 + dY^3
.. math::
a = A_1 + B_1 X + C_1 X^2 + D_1 X^3
.. math::
b = A_2 + B_2 X + C_2 X^2 + D_2 X^3
.. math::
c = A_3 + B_3 X + C_3 X^2 + D_3 X^3
.. math::
d = A_4 + B_4 X + C_4 X^2 + D_4 X^3
Parameters
----------
T : float
Temperature of the gas [K]
MW : float
Molecular weight of the gas [g/mol]
Returns
-------
kg : float
Estimated gas thermal conductivity [W/m/k]
Notes
-----
The accuracy of this equation has not been reviewed.
Examples
--------
>>> Bahadori_gas(40+273.15, 20.0) # Point from article
0.03196816533787329
References
----------
.. [1] Bahadori, Alireza, and Saeid Mokhatab. "Estimating Thermal
Conductivity of Hydrocarbons." Chemical Engineering 115, no. 13
(December 2008): 52-54
'''
A = (4.3931323468E-1, -3.88001122207E-2, 9.28616040136E-4, -6.57828995724E-6)
B = (-2.9624238519E-3, 2.67956145820E-4, -6.40171884139E-6, 4.48579040207E-8)
C = (7.54249790107E-6, -6.46636219509E-7, 1.5124510261E-8, -1.0376480449E-10)
D = (-6.0988433456E-9, 5.20752132076E-10, -1.19425545729E-11, 8.0136464085E-14)
X, Y = T, MW
a = A[0] + X*(B[0] + X*(C[0] + D[0]*X))
b = A[1] + X*(B[1] + X*(C[1] + D[1]*X))
c = A[2] + X*(B[2] + X*(C[2] + D[2]*X))
d = A[3] + X*(B[3] + X*(C[3] + D[3]*X))
return a + Y*(b + Y*(c + d*Y))
### Thermal Conductivity of dense gases
[docs]def Stiel_Thodos_dense(T, MW, Tc, Pc, Vc, Zc, Vm, kg):
r'''Estimates the thermal conductivity of a gas at high pressure as a
function of temperature using difference method of Stiel and Thodos [1]_
as shown in [2]_.
if :math:`\rho_r < 0.5`:
.. math::
(\lambda-\lambda^\circ)\Gamma Z_c^5=1.22\times 10^{-2} [\exp(0.535 \rho_r)-1]
if :math:`0.5 < \rho_r < 2.0`:
.. math::
(\lambda-\lambda^\circ)\Gamma Z_c^5=1.22\times 10^{-2} [\exp(0.535 \rho_r)-1]
if :math:`2 < \rho_r < 2.8`:
.. math::
(\lambda-\lambda^\circ)\Gamma Z_c^5=1.22\times 10^{-2} [\exp(0.535 \rho_r)-1]
.. math::
\Gamma = 210 \left(\frac{T_cMW^3}{P_c^4}\right)^{1/6}
Parameters
----------
T : float
Temperature of the gas [K]
MW : float
Molecular weight of the gas [g/mol]
Tc : float
Critical temperature of the gas [K]
Pc : float
Critical pressure of the gas [Pa]
Vc : float
Critical volume of the gas [m^3/mol]
Zc : float
Critical compressibility of the gas [-]
Vm : float
Molar volume of the gas at T and P [m^3/mol]
kg : float
Low-pressure gas thermal conductivity [W/m/k]
Returns
-------
kg : float
Estimated dense gas thermal conductivity [W/m/k]
Notes
-----
Pc is internally converted to bar.
Examples
--------
>>> Stiel_Thodos_dense(T=378.15, MW=44.013, Tc=309.6, Pc=72.4E5,
... Vc=97.4E-6, Zc=0.274, Vm=144E-6, kg=2.34E-2)
0.041245574404863684
References
----------
.. [1] Stiel, Leonard I., and George Thodos. "The Thermal Conductivity of
Nonpolar Substances in the Dense Gaseous and Liquid Regions." AIChE
Journal 10, no. 1 (January 1, 1964): 26-30. doi:10.1002/aic.690100114.
.. [2] Reid, Robert C.; Prausnitz, John M.; Poling, Bruce E.
Properties of Gases and Liquids. McGraw-Hill Companies, 1987.
'''
gamma = 210.0*(Tc*MW*MW*MW*(Pc*1e-5)**-4.0)**(1.0/6.0)
rhor = Vc/Vm
if rhor < 0.5:
term = 1.22E-2*(exp(0.535*rhor) - 1.)
elif rhor < 2.0:
term = 1.14E-2*(exp(0.67*rhor) - 1.069)
else:
# Technically only up to 2.8
term = 2.60E-3*(exp(1.155*rhor) + 2.016)
diff = term*Zc**-5/gamma
kg = kg + diff
return kg
[docs]def Eli_Hanley_dense(T, MW, Tc, Vc, Zc, omega, Cvm, Vm):
r'''Estimates the thermal conductivity of a gas at high pressure as a
function of temperature using the reference fluid method of Eli and
Hanley [1]_ as shown in [2]_.
.. math::
Tr = min(Tr, 2)
.. math::
Vr = min(Vr, 2)
.. math::
f = \frac{T_c}{190.4}\theta
.. math::
h = \frac{V_c}{9.92E-5}\psi
.. math::
T_0 = T/f
.. math::
\rho_0 = \frac{16.04}{V}h
.. math::
\theta = 1 + (\omega-0.011)\left(0.09057 - 0.86276\ln Tr + \left(
0.31664 - \frac{0.46568}{Tr}\right) (V_r - 0.5)\right)
.. math::
\psi = [1 + (\omega - 0.011)(0.39490(V_r - 1.02355) - 0.93281(V_r -
0.75464)\ln T_r]\frac{0.288}{Z_c}
.. math::
\lambda_1 = 1944 \eta_0
.. math::
\lambda_2 = \left\{b_1 + b_2\left[b_3 - \ln \left(\frac{T_0}{b_4}
\right)\right]^2\right\}\rho_0
.. math::
\lambda_3 = \exp\left(a_1 + \frac{a_2}{T_0}\right)\left\{\exp[(a_3 +
\frac{a_4}{T_0^{1.5}})\rho_0^{0.1} + (\frac{\rho_0}{0.1617} - 1)
\rho_0^{0.5}(a_5 + \frac{a_6}{T_0} + \frac{a_7}{T_0^2})] - 1\right\}
.. math::
\lambda^{**} = [\lambda_1 + \lambda_2 + \lambda_3]H
.. math::
H = \left(\frac{16.04}{MW}\right)^{0.5}f^{0.5}/h^{2/3}
.. math::
X = \left\{\left[1 - \frac{T}{f}\left(\frac{df}{dT}\right)_v \right]
\frac{0.288}{Z_c}\right\}^{1.5}
.. math::
\left(\frac{df}{dT}\right)_v = \frac{T_c}{190.4}\left(\frac{d\theta}
{d T}\right)_v
.. math::
\left(\frac{d\theta}{d T}\right)_v = (\omega-0.011)\left[
\frac{-0.86276}{T} + (V_r-0.5)\frac{0.46568T_c}{T^2}\right]
Parameters
----------
T : float
Temperature of the gas [K]
MW : float
Molecular weight of the gas [g/mol]
Tc : float
Critical temperature of the gas [K]
Vc : float
Critical volume of the gas [m^3/mol]
Zc : float
Critical compressibility of the gas [-]
omega : float
Acentric factor of the gas [-]
Cvm : float
Molar contant volume heat capacity of the gas [J/mol/K]
Vm : float
Volume of the gas at T and P [m^3/mol]
Returns
-------
kg : float
Estimated dense gas thermal conductivity [W/m/k]
Notes
-----
Reference fluid is Methane.
MW internally converted to kg/g-mol.
Examples
--------
>>> Eli_Hanley_dense(T=473., MW=42.081, Tc=364.9, Vc=1.81E-4, Zc=0.274,
... omega=0.144, Cvm=82.70, Vm=1.721E-4)
0.06038475754109959
References
----------
.. [1] Ely, James F., and H. J. M. Hanley. "Prediction of Transport
Properties. 2. Thermal Conductivity of Pure Fluids and Mixtures."
Industrial & Engineering Chemistry Fundamentals 22, no. 1 (February 1,
1983): 90-97. doi:10.1021/i100009a016.
.. [2] Reid, Robert C.; Prausnitz, John M.; Poling, Bruce E.
Properties of Gases and Liquids. McGraw-Hill Companies, 1987.
'''
Cs = [2.907741307E6, -3.312874033E6, 1.608101838E6, -4.331904871E5,
7.062481330E4, -7.116620750E3, 4.325174400E2, -1.445911210E1,
2.037119479E-1]
Tr = T/Tc
if Tr > 2.0:
Tr = 2.0
Vr = Vm/Vc
if Vr > 2.0:
Vr = 2.0
logTr = log(Tr)
theta = 1.0 + (omega - 0.011)*(0.09057 - 0.86276*logTr + (0.31664 - 0.46568/Tr)*(Vr-0.5))
psi = (1.0 + (omega- 0.011)*(0.39490*(Vr-1.02355) - 0.93281*(Vr-0.75464)*logTr))*0.288/Zc
f = Tc/190.4*theta
h = Vc/9.92E-5*psi
T0 = T/f
rho0 = 16.04/(Vm*1E6)*h # Vm must be in cm^3/mol here.
T0_third = T0**(1.0/3.0)
T0_moving = 1.0/T0
tot = 0.0
for i in range(9):
tot += Cs[i]*T0_moving
T0_moving *= T0_third
eta0 = 1E-7*tot
k1 = 1944*eta0
b1 = -0.25276920E0
b2 = 0.334328590E0
b3 = 1.12
b4 = 0.1680E3
x0 = (b3 - log(T0/b4))
k2 = (b1 + b2*x0*x0)*1e-3*rho0
a1 = -7.19771
a2 = 85.67822
a3 = 12.47183
a4 = -984.6252
a5 = 0.3594685
a6 = 69.79841
a7 = -872.8833
k3 = exp(a1 + a2/T0)*(exp((a3 + a4/T0**1.5)*rho0**0.1 + (rho0/0.1617 - 1.0)*rho0**0.5*(a5 + a6/T0 + a7/T0**2)) - 1)/1000.
if T/Tc > 2.0:
dtheta = 0.0
else:
dtheta = (omega - 0.011)*(-0.86276/T + (Vr-0.5)*0.46568*Tc/T**2)
dfdT = Tc/190.4*dtheta
X = ((1.0 - T/f*dfdT)*0.288/Zc)**1.5
H = (16.04/MW)**0.5*f**0.5/h**(2/3.)
ks = (k1*X + k2 + k3)*H
### Uses calculations similar to those for pure species here
theta = 1.0 + (omega - 0.011)*(0.56553 - 0.86276*logTr - 0.69852/Tr)
psi = (1.0 + (omega - 0.011)*(0.38560 - 1.1617*logTr))*0.288/Zc
f = Tc/190.4*theta
h = Vc/9.92E-5*psi
T0 = T/f
T0_third = T0**(1.0/3.0)
T0_moving = 1.0/T0
tot = 0.0
for i in range(9):
tot += Cs[i]*T0_moving
T0_moving *= T0_third
eta0 = 1E-7*tot
H = (16.04*f/MW)**0.5*h**(-2.0/3.)
etas = eta0*H*MW/16.04
k = ks + etas*1e3/(MW)*1.32*(Cvm - 1.5*R)
return k
[docs]def Chung_dense(T, MW, Tc, Vc, omega, Cvm, Vm, mu, dipole, association=0.0):
r'''Estimates the thermal conductivity of a gas at high pressure as a
function of temperature using the reference fluid method of
Chung [1]_ as shown in [2]_.
.. math::
\lambda = \frac{31.2 \eta^\circ \Psi}{M'}(G_2^{-1} + B_6 y)+qB_7y^2T_r^{1/2}G_2
.. math::
\Psi = 1 + \alpha \left\{[0.215+0.28288\alpha-1.061\beta+0.26665Z]/
[0.6366+\beta Z + 1.061 \alpha \beta]\right\}
.. math::
\alpha = \frac{C_v}{R}-1.5
.. math::
\beta = 0.7862-0.7109\omega + 1.3168\omega^2
.. math::
Z=2+10.5T_r^2
.. math::
q = 3.586\times 10^{-3} (T_c/M')^{1/2}/V_c^{2/3}
.. math::
y = \frac{V_c}{6V}
.. math::
G_1 = \frac{1-0.5y}{(1-y)^3}
.. math::
G_2 = \frac{(B_1/y)[1-\exp(-B_4y)]+ B_2G_1\exp(B_5y) + B_3G_1}
{B_1B_4 + B_2 + B_3}
.. math::
B_i = a_i + b_i \omega + c_i \mu_r^4 + d_i \kappa
Parameters
----------
T : float
Temperature of the gas [K]
MW : float
Molecular weight of the gas [g/mol]
Tc : float
Critical temperature of the gas [K]
Vc : float
Critical volume of the gas [m^3/mol]
omega : float
Acentric factor of the gas [-]
Cvm : float
Molar contant volume heat capacity of the gas [J/mol/K]
Vm : float
Molar volume of the gas at T and P [m^3/mol]
mu : float
Low-pressure gas viscosity [Pa*s]
dipole : float
Dipole moment [debye]
association : float, optional
Association factor [-]
Returns
-------
kg : float
Estimated dense gas thermal conductivity [W/m/k]
Notes
-----
MW internally converted to kg/g-mol.
Vm internally converted to mL/mol.
[1]_ is not the latest form as presented in [1]_.
Association factor is assumed 0. Relates to the polarity of the gas.
Coefficients as follows:
ais = [2.4166E+0, -5.0924E-1, 6.6107E+0, 1.4543E+1, 7.9274E-1, -5.8634E+0, 9.1089E+1]
bis = [7.4824E-1, -1.5094E+0, 5.6207E+0, -8.9139E+0, 8.2019E-1, 1.2801E+1, 1.2811E+2]
cis = [-9.1858E-1, -4.9991E+1, 6.4760E+1, -5.6379E+0, -6.9369E-1, 9.5893E+0, -5.4217E+1]
dis = [1.2172E+2, 6.9983E+1, 2.7039E+1, 7.4344E+1, 6.3173E+0, 6.5529E+1, 5.2381E+2]
Examples
--------
>>> Chung_dense(T=473., MW=42.081, Tc=364.9, Vc=184.6E-6, omega=0.142,
... Cvm=82.67, Vm=172.1E-6, mu=134E-7, dipole=0.4)
0.06160569232570781
References
----------
.. [1] Chung, Ting Horng, Mohammad Ajlan, Lloyd L. Lee, and Kenneth E.
Starling. "Generalized Multiparameter Correlation for Nonpolar and Polar
Fluid Transport Properties." Industrial & Engineering Chemistry Research
27, no. 4 (April 1, 1988): 671-79. doi:10.1021/ie00076a024.
.. [2] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition.
New York: McGraw-Hill Professional, 2000.
'''
Tr = T/Tc
mur = 131.3*dipole*(Vc*1E6*Tc)**-0.5
mur4 = mur*mur
mur4 *= mur4
# From Chung Method
alpha = Cvm*R_inv - 1.5
beta = 0.7862 - 0.7109*omega + 1.3168*omega*omega
Z = 2.0 + 10.5*Tr*Tr
psi = 1.0 + alpha*((0.215 + 0.28288*alpha - 1.061*beta + 0.26665*Z)/(0.6366 + beta*Z + 1.061*alpha*beta))
y = Vc/(6.0*Vm)
B1 = 2.4166 + 0.74824*omega + -0.91858*mur4 + 121.72*association
B2 = -0.50924 + -1.5094*omega + -49.991*mur4 + 69.983*association
B3 = 6.6107 + 5.6207*omega + 64.76*mur4 + 27.039*association
B4 = 14.543 + -8.9139*omega + -5.6379*mur4 + 74.344*association
B5 = 0.79274 + 0.82019*omega + -0.69369*mur4 + 6.3173*association
B6 = -5.8634 + 12.801*omega + 9.5893*mur4 + 65.529*association
B7 = 91.089 + 128.11*omega + -54.217*mur4 + 523.81*association
x0 = 1.0 - y
G1 = (1.0 - 0.5*y)/(x0*x0*x0)
G2 = (B1/y*(1.0 - exp(-B4*y)) + B2*G1*exp(B5*y) + B3*G1)/(B1*B4 + B2 + B3)
MW_kg_inv = 1000.0/MW
q = 3.586E-3*(Tc*MW_kg_inv)**0.5*(Vc*1E6)**(-2.0/3.)
return 31.2*mu*psi*MW_kg_inv*(1.0/G2 + B6*y) + q*B7*y*y*Tr**0.5*G2
### Thermal conductivity of gas mixtures
[docs]def Lindsay_Bromley(T, ys, ks, mus, Tbs, MWs):
r'''Calculates thermal conductivity of a gas mixture according to
mixing rules in [1]_ and also in [2]_. It is significantly more complicated
than other kinetic theory models.
.. math::
k = \sum_i \frac{y_i k_i}{\sum_j y_i A_{ij}}
.. math::
A_{ij} = \frac{1}{4} \left\{ 1 + \left[\frac{\eta_i}{\eta_j}
\left(\frac{MW_j}{MW_i}\right)^{0.75} \left( \frac{T+S_i}{T+S_j}\right)
\right]^{0.5} \right\}^2 \left( \frac{T+S_{ij}}{T+S_i}\right)
.. math::
S_{ij} = S_{ji} = (S_i S_j)^{0.5}
.. math::
S_i = 1.5 T_b
Parameters
----------
T : float
Temperature of gas [K]
ys : float
Mole fractions of gas components
ks : float
Gas thermal conductivites of all components, [W/m/K]
mus : float
Gas viscosities of all components, [Pa*s]
Tbs : float
Boiling points of all components, [K]
MWs : float
Molecular weights of all components, [g/mol]
Returns
-------
kg : float
Thermal conductivity of gas mixture, [W/m/K]
Notes
-----
This equation is entirely dimensionless; all dimensions cancel.
The example is from [2]_; all results agree.
The original source has not been reviewed.
DIPPR Procedure 9D: Method for the Thermal Conductivity of Gas Mixtures
Average deviations of 4-5% for 77 binary mixtures reviewed in [2]_, from
1342 points; also six ternary mixtures (70 points); max deviation observed
was 40%. (DIPPR)
Examples
--------
>>> Lindsay_Bromley(323.15, [0.23, 0.77], [1.939E-2, 1.231E-2], [1.002E-5, 1.015E-5], [248.31, 248.93], [46.07, 50.49])
0.013902644179693132
References
----------
.. [1] Lindsay, Alexander L., and LeRoy A. Bromley. "Thermal Conductivity
of Gas Mixtures." Industrial & Engineering Chemistry 42, no. 8
(August 1, 1950): 1508-11. doi:10.1021/ie50488a017.
.. [2] Danner, Ronald P, and Design Institute for Physical Property Data.
Manual for Predicting Chemical Process Design Data. New York, N.Y, 1982.
.. [3] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition.
New York: McGraw-Hill Professional, 2000.
'''
N = len(ys)
S_roots = [0.0]*N
bigis = [0.0]*N
Ss_invT = [0.0]*N
TSrootSsinv = [0.0]*N
bigis_inv = [0.0]*N
for i in range(N):
Si = 1.5*Tbs[i]
S_roots[i] = sqrt(Si)
T_Si = T + Si
S_inv = 1.0/T_Si
Ss_invT[i] = T*S_inv
TSrootSsinv[i] = S_roots[i]*S_inv
rt05MW = sqrt(MWs[i])
rt25MW = sqrt(rt05MW)
bigis[i] = sqrt(T_Si*mus[i]/(rt05MW*rt25MW))# correct and clever - compute MW^0.375
bigis_inv[i] = 1.0/bigis[i]
k = 0.0
for i in range(N):
den = 0.0
for j in range(N):
# 1 multiply, 3 indexes into different arrays
x0 = Ss_invT[i] + TSrootSsinv[i]*S_roots[j]
# 2 multiplies, 3 indexes
# x0 = (T + S_rooti*S_roots[j])*Ss_inv[i]
big = 1.0 + bigis[i]*bigis_inv[j]
Aij = big*big*x0
den += ys[j]*Aij
k += ys[i]*ks[i]/den
k *= 4.0 # constant
return k
# Original, unoptimized implementation
# cmps = range(len(ys))
# Ss = [1.5*Tb for Tb in Tbs]
# Sij = [[(Si*Sj)**0.5 for Sj in Ss] for Si in Ss]
#
# Aij = [[0.25*(1. + (mus[i]/mus[j]*(MWs[j]/MWs[i])**0.75
# *(T+Ss[i])/(T+Ss[j]))**0.5 )**2 *(T+Sij[i][j])/(T+Ss[i])
# for j in cmps] for i in cmps]
#
# return sum([ys[i]*ks[i]/sum(ys[j]*Aij[i][j] for j in cmps) for i in cmps])
[docs]def Wassiljewa_Herning_Zipperer(zs, ks, MWs, MW_roots=None):
r'''Calculates thermal conductivity of a gas mixture according to
the kinetic theory expression of Wassiljewa with the interaction
term from the Herning-Zipperer expression. This is also used for
the prediction of gas mixture viscosity.
.. math::
k = \sum \frac{y_i k_i}{\sum y_i A_{ij}}
.. math::
A_{ij} = \left(\frac{MW_j}{MW_i}\right)^{0.5}
Parameters
----------
zs : float
Mole fractions of gas components, [-]
ks : float
gas thermal conductivites of all components, [W/m/K]
MWs : float
Molecular weights of all components, [g/mol]
MW_roots : float, optional
Square roots of molecular weights of all components;
speeds up the calculation if provided, [g^0.5/mol^0.5]
Returns
-------
kg : float
Thermal conductivity of gas mixture, [W/m/K]
Notes
-----
This equation is entirely dimensionless; all dimensions cancel.
Examples
--------
>>> Wassiljewa_Herning_Zipperer(zs=[.1, .4, .5], ks=[1.002E-5, 1.15E-5, 2e-5], MWs=[40.0, 50.0, 60.0])
1.5861181979916883e-05
References
----------
.. [1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition.
New York: McGraw-Hill Professional, 2000.
'''
return Herning_Zipperer(zs, ks, MWs, MW_roots)