Skip to content

Thermal Conductivity (polykin.properties.thermal_conductivity)¤

This module implements methods to calculate the thermal conductivity of pure gases, gas mixtures, pure liquids, and liquid mixtures.

KLMX2_Li ¤

KLMX2_Li(
    w: FloatVectorLike,
    k: FloatVectorLike,
    rho: FloatVectorLike,
) -> float

Calculate the thermal conductivity of a liquid mixture from the thermal conductivities of the pure components using the Li mixing rule.

\[ \begin{aligned} k_m &= \sum_{i=1}^N \sum_{j=1}^N \phi_i \phi_j k_{ij} \\ k_{ij} &= \frac{2}{\frac{1}{k_i} + \frac{1}{k_j}} \\ \phi_i &= \frac{\frac{w_i}{\rho_i}} {\sum_{j=1}^N \frac{w_j}{\rho_j}} \end{aligned} \]

Note

In this equation, the units of mass fraction \(w_i\) and density \(\rho_i\) are arbitrary, as they cancel out when considering the ratio of the numerator to the denominator.

References

  • RC Reid, JM Prausniz, and BE Poling. The properties of gases & liquids 4th edition, 1986, p. 565.
PARAMETER DESCRIPTION
w

Mass fractions of all components. Unit = Any.

TYPE: FloatVectorLike

k

Thermal conductivities of all components. Unit = Any.

TYPE: FloatVectorLike

rho

Densities of all components, \(\rho\). Unit = Any.

TYPE: FloatVectorLike

RETURNS DESCRIPTION
float

Mixture thermal conductivity, \(k_m\). Unit = [k].

Examples:

Estimate the thermal conductivity of a 50 wt% styrene/isoprene liquid mixture at 20°C.

>>> from polykin.properties.thermal_conductivity import KLMX2_Li
>>> import numpy as np
>>> w = [0.5, 0.5]
>>> k = [0.172, 0.124]    # W/(m·K), from literature
>>> rho = [0.909, 0.681]  # kg/L
>>> k_mix = KLMX2_Li(w, k, rho)
>>> print(f"{k_mix:.2e} W/(m·K)")
1.43e-01 W/(m·K)
Source code in src/polykin/properties/thermal_conductivity/liquid.py
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
def KLMX2_Li(w: FloatVectorLike,
             k: FloatVectorLike,
             rho: FloatVectorLike,
             ) -> float:
    r"""Calculate the thermal conductivity of a liquid mixture from the
    thermal conductivities of the pure components using the Li mixing rule.

    $$ \begin{aligned}
        k_m &= \sum_{i=1}^N \sum_{j=1}^N \phi_i \phi_j k_{ij} \\
        k_{ij} &= \frac{2}{\frac{1}{k_i} + \frac{1}{k_j}} \\
        \phi_i &= \frac{\frac{w_i}{\rho_i}}
                       {\sum_{j=1}^N \frac{w_j}{\rho_j}}
    \end{aligned} $$

    !!! note

        In this equation, the units of mass fraction $w_i$ and density $\rho_i$
        are arbitrary, as they cancel out when considering the ratio of the
        numerator to the denominator.

    **References**

    *   RC Reid, JM Prausniz, and BE Poling. The properties of gases & liquids
        4th edition, 1986, p. 565.

    Parameters
    ----------
    w : FloatVectorLike
        Mass fractions of all components. Unit = Any.
    k : FloatVectorLike
        Thermal conductivities of all components. Unit = Any.
    rho : FloatVectorLike
        Densities of all components, $\rho$. Unit = Any.

    Returns
    -------
    float
        Mixture thermal conductivity, $k_m$. Unit = [k].

    Examples
    --------
    Estimate the thermal conductivity of a 50 wt% styrene/isoprene liquid
    mixture at 20°C.
    >>> from polykin.properties.thermal_conductivity import KLMX2_Li
    >>> import numpy as np
    >>> w = [0.5, 0.5]
    >>> k = [0.172, 0.124]    # W/(m·K), from literature
    >>> rho = [0.909, 0.681]  # kg/L
    >>> k_mix = KLMX2_Li(w, k, rho)
    >>> print(f"{k_mix:.2e} W/(m·K)")
    1.43e-01 W/(m·K)
    """

    w = np.asarray(w)
    k = np.asarray(k)
    rho = np.asarray(rho)

    phi = w/rho
    phi /= phi.sum()
    K = 2 / (1/k + 1/k[:, np.newaxis])

    return quadratic_mixing(phi, K)

KVMX2_Wassilijewa ¤

KVMX2_Wassilijewa(
    y: FloatVectorLike,
    k: FloatVectorLike,
    M: FloatVectorLike,
) -> float

Calculate the thermal conductivity of a gas mixture from the thermal conductivities of the pure components using the mixing rule of Wassilijewa, with the simplification of Herning and Zipperer.

\[ k_m = \frac{\displaystyle \sum_{i=1}^N y_i M_i^{1/2} k_i} {\displaystyle \sum_{i=1}^N y_i M_i^{1/2}} \]

Note

In this equation, the units of mole fraction \(y_i\) and molar mass \(M_i\) are arbitrary, as they cancel out when considering the ratio of the numerator to the denominator.

References

  • RC Reid, JM Prausniz, and BE Poling. The properties of gases & liquids 4th edition, 1986, pp. 410, 531.
PARAMETER DESCRIPTION
y

Mole fractions of all components. Unit = Any.

TYPE: FloatVectorLike

k

Thermal conductivities of all components. Unit = Any.

TYPE: FloatVectorLike

M

Molar masses of all components. Unit = Any.

TYPE: FloatVectorLike

RETURNS DESCRIPTION
float

Mixture thermal conductivity, \(k_m\). Unit = [k].

Examples:

Estimate the thermal conductivity of a 50 mol% styrene/ethyl-benzene gas mixture at 25°C and 0.1 bar.

>>> from polykin.properties.thermal_conductivity import KVMX2_Wassilijewa
>>> y = [0.5, 0.5]
>>> k = [1.00e-2, 1.55e-2] # W/(m·K), from literature
>>> M = [104.15, 106.17]   # g/mol
>>> k_mix = KVMX2_Wassilijewa(y, k, M)
>>> print(f"{k_mix:.2e} W/(m·K)")
1.28e-02 W/(m·K)
Source code in src/polykin/properties/thermal_conductivity/vapor.py
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
def KVMX2_Wassilijewa(y: FloatVectorLike,
                      k: FloatVectorLike,
                      M: FloatVectorLike
                      ) -> float:
    r"""Calculate the thermal conductivity of a gas mixture from the thermal
    conductivities of the pure components using the mixing rule of Wassilijewa,
    with the simplification of Herning and Zipperer.

    $$ k_m = \frac{\displaystyle \sum_{i=1}^N y_i M_i^{1/2} k_i}
                  {\displaystyle \sum_{i=1}^N y_i M_i^{1/2}} $$

    !!! note

        In this equation, the units of mole fraction $y_i$ and molar mass
        $M_i$ are arbitrary, as they cancel out when considering the ratio of
        the numerator to the denominator.

    **References**

    *   RC Reid, JM Prausniz, and BE Poling. The properties of gases & liquids
        4th edition, 1986, pp. 410, 531.

    Parameters
    ----------
    y : FloatVectorLike
        Mole fractions of all components. Unit = Any.
    k : FloatVectorLike
        Thermal conductivities of all components. Unit = Any.
    M : FloatVectorLike
        Molar masses of all components. Unit = Any.

    Returns
    -------
    float
        Mixture thermal conductivity, $k_m$. Unit = [k].

    Examples
    --------
    Estimate the thermal conductivity of a 50 mol% styrene/ethyl-benzene gas
    mixture at 25°C and 0.1 bar.
    >>> from polykin.properties.thermal_conductivity import KVMX2_Wassilijewa
    >>> y = [0.5, 0.5]
    >>> k = [1.00e-2, 1.55e-2] # W/(m·K), from literature
    >>> M = [104.15, 106.17]   # g/mol
    >>> k_mix = KVMX2_Wassilijewa(y, k, M)
    >>> print(f"{k_mix:.2e} W/(m·K)")
    1.28e-02 W/(m·K)
    """
    y = np.asarray(y)
    k = np.asarray(k)
    M = np.asarray(M)

    a = y*sqrt(M)
    a /= a.sum()

    return dot(a, k)

KVMXPC_Stiel_Thodos ¤

KVMXPC_Stiel_Thodos(
    v: float,
    y: FloatVectorLike,
    M: FloatVectorLike,
    Tc: FloatVectorLike,
    Pc: FloatVectorLike,
    Zc: FloatVectorLike,
    w: FloatVectorLike,
) -> float

Calculate the effect of pressure (or density) on the thermal conductivity of gas mixtures using the method of Stiel and Thodos for nonpolar components, combined with the mixing rules of Yorizane.

References

  • RC Reid, JM Prausniz, and BE Poling. The properties of gases & liquids 4th edition, 1986, p. 536.
PARAMETER DESCRIPTION
v

Gas molar volume. Unit = m³/mol.

TYPE: float

y

Mole fractions of all components. Unit = mol/mol.

TYPE: FloatVectorLike

M

Molar masses of all components. Unit = kg/mol.

TYPE: FloatVectorLike

Tc

Critical temperatures of all components. Unit = K.

TYPE: FloatVectorLike

Pc

Critical pressures of all components. Unit = Pa.

TYPE: FloatVectorLike

Zc

Critical compressibility factors of all components.

TYPE: FloatVectorLike

w

Acentric factors of all components.

TYPE: FloatVectorLike

RETURNS DESCRIPTION
float

Residual thermal conductivity, \((k_m - k_m^{\circ})\). Unit = W/(m·K).

Examples:

Estimate the residual thermal conductivity of a 50 mol% ethylene/propylene mixture at 350 K and 100 bar.

>>> from polykin.properties.thermal_conductivity import KVMXPC_Stiel_Thodos
>>> import numpy as np
>>> v = 1.12e-4  # m³/mol, with Peng-Robinson
>>> y = [0.5, 0.5]
>>> M = [28.05e-3, 42.08e-3]  # kg/mol
>>> Pc = [50.4e5, 46.0e5]     # Pa
>>> Tc = [282.4, 364.9]       # K
>>> Zc = [0.280, 0.274]
>>> w = [0.089, 0.144]
>>> k_residual = KVMXPC_Stiel_Thodos(v, y, M, Tc, Pc, Zc, w)
>>> print(f"{k_residual:.2e} W/(m·K)")
3.82e-02 W/(m·K)
Source code in src/polykin/properties/thermal_conductivity/vapor.py
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
def KVMXPC_Stiel_Thodos(v: float,
                        y: FloatVectorLike,
                        M: FloatVectorLike,
                        Tc: FloatVectorLike,
                        Pc: FloatVectorLike,
                        Zc: FloatVectorLike,
                        w: FloatVectorLike
                        ) -> float:
    r"""Calculate the effect of pressure (or density) on the thermal
    conductivity of gas mixtures using the method of Stiel and Thodos for
    nonpolar components, combined with the mixing rules of Yorizane.

    **References**

    *   RC Reid, JM Prausniz, and BE Poling. The properties of gases & liquids
        4th edition, 1986, p. 536.

    Parameters
    ----------
    v : float
        Gas molar volume. Unit = m³/mol.
    y : FloatVectorLike
        Mole fractions of all components. Unit = mol/mol.
    M : FloatVectorLike
        Molar masses of all components. Unit = kg/mol.
    Tc : FloatVectorLike
        Critical temperatures of all components. Unit = K.
    Pc : FloatVectorLike
        Critical pressures of all components. Unit = Pa.
    Zc : FloatVectorLike
        Critical compressibility factors of all components.
    w : FloatVectorLike
        Acentric factors of all components.

    Returns
    -------
    float
        Residual thermal conductivity, $(k_m - k_m^{\circ})$. Unit = W/(m·K).

    Examples
    --------
    Estimate the residual thermal conductivity of a 50 mol% ethylene/propylene
    mixture at 350 K and 100 bar.
    >>> from polykin.properties.thermal_conductivity import KVMXPC_Stiel_Thodos
    >>> import numpy as np
    >>> v = 1.12e-4  # m³/mol, with Peng-Robinson
    >>> y = [0.5, 0.5]
    >>> M = [28.05e-3, 42.08e-3]  # kg/mol
    >>> Pc = [50.4e5, 46.0e5]     # Pa
    >>> Tc = [282.4, 364.9]       # K
    >>> Zc = [0.280, 0.274]
    >>> w = [0.089, 0.144]
    >>> k_residual = KVMXPC_Stiel_Thodos(v, y, M, Tc, Pc, Zc, w)
    >>> print(f"{k_residual:.2e} W/(m·K)")
    3.82e-02 W/(m·K)
    """

    y = np.asarray(y)
    M = np.asarray(M)
    Tc = np.asarray(Tc)
    Pc = np.asarray(Pc)
    Zc = np.asarray(Zc)
    w = np.asarray(w)

    vc = Zc*R*Tc/Pc

    # The loop could be simplified because
    # sum_i sum_j y_i y_j V_{ij} = sum_i y_i^2 V_{ii} + 2 sum_i sum_{j>i} y_i y_j V_ij
    vc_mix = 0.
    Tc_mix = 0.
    N = len(y)
    for i in range(N):
        for j in range(N):
            if i == j:
                vc_ = vc[i]
                Tc_ = Tc[i]
            else:
                vc_ = (1/8)*(vc[i]**(1/3) + vc[j]**(1/3))**3
                Tc_ = sqrt(Tc[i]*Tc[j])
            vc_term = y[i]*y[j]*vc_
            vc_mix += vc_term
            Tc_mix += vc_term*Tc_
    Tc_mix /= vc_mix

    w_mix = dot(y, w)
    Zc_mix = 0.291 - 0.08*w_mix
    Pc_mix = Zc_mix*R*Tc_mix/vc_mix
    M_mix = dot(y, M)

    return KVPC_Stiel_Thodos(v, M_mix, Tc_mix, Pc_mix, Zc_mix)

KVPC_Stiel_Thodos ¤

KVPC_Stiel_Thodos(
    v: float, M: float, Tc: float, Pc: float, Zc: float
) -> float

Calculate the effect of pressure (or density) on the thermal conductivity of pure gases using the method of Stiel and Thodos for nonpolar components.

\[ \left( k-k^{\circ} \right) \Gamma Z_c^5 = f(\rho_r) \]

where \(k\) is the dense gas thermal conductivity, \(k^\circ\) is the low-pressure thermal conductivtiy, \(\Gamma\) is a group of constants, \(Z_c\) is the critical compressibility factor, and \(\rho_r = v_c / v\) is the reduced gas density. This equation is valid in the range \(0 \leq \rho_r < 2.8\).

References

  • RC Reid, JM Prausniz, and BE Poling. The properties of gases & liquids 4th edition, 1986, p. 521.
PARAMETER DESCRIPTION
v

Gas molar volume. Unit = m³/mol.

TYPE: float

M

Molar mass. Unit = kg/mol.

TYPE: float

Tc

Critical temperature. Unit = K.

TYPE: float

Pc

Critical pressure. Unit = Pa.

TYPE: float

Zc

Critical compressibility factor.

TYPE: float

RETURNS DESCRIPTION
float

Residual thermal conductivity, \((k - k^{\circ})\). Unit = W/(m·K).

Examples:

Estimate the residual thermal conductivity of ethylene at 350 K and 100 bar.

>>> from polykin.properties.thermal_conductivity import KVPC_Stiel_Thodos
>>> v = 1.84e-4 # m³/mol, with Peng-Robinson
>>> k_residual = KVPC_Stiel_Thodos(v=v, M=28.05e-3,
...                                Tc=282.4, Pc=50.4e5, Zc=0.280)
>>> print(f"{k_residual:.2e} W/(m·K)")
1.69e-02 W/(m·K)
Source code in src/polykin/properties/thermal_conductivity/vapor.py
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
def KVPC_Stiel_Thodos(v: float,
                      M: float,
                      Tc: float,
                      Pc: float,
                      Zc: float
                      ) -> float:
    r"""Calculate the effect of pressure (or density) on the thermal
    conductivity of pure gases using the method of Stiel and Thodos for
    nonpolar components.

    $$ \left( k-k^{\circ} \right) \Gamma Z_c^5 = f(\rho_r) $$

    where $k$ is the dense gas thermal conductivity, $k^\circ$ is the
    low-pressure thermal conductivtiy, $\Gamma$ is a group of constants, $Z_c$
    is the critical compressibility factor, and $\rho_r = v_c / v$ is the
    reduced gas density. This equation is valid in the range
    $0 \leq \rho_r < 2.8$.

    **References**

    *   RC Reid, JM Prausniz, and BE Poling. The properties of gases & liquids
        4th edition, 1986, p. 521.

    Parameters
    ----------
    v : float
        Gas molar volume. Unit = m³/mol.
    M : float
        Molar mass. Unit = kg/mol.
    Tc : float
        Critical temperature. Unit = K.
    Pc : float
        Critical pressure. Unit = Pa.
    Zc : float
        Critical compressibility factor.

    Returns
    -------
    float
        Residual thermal conductivity, $(k - k^{\circ})$. Unit = W/(m·K).

    Examples
    --------
    Estimate the residual thermal conductivity of ethylene at 350 K and
    100 bar.
    >>> from polykin.properties.thermal_conductivity import KVPC_Stiel_Thodos
    >>> v = 1.84e-4 # m³/mol, with Peng-Robinson
    >>> k_residual = KVPC_Stiel_Thodos(v=v, M=28.05e-3,
    ...                                Tc=282.4, Pc=50.4e5, Zc=0.280)
    >>> print(f"{k_residual:.2e} W/(m·K)")
    1.69e-02 W/(m·K)
    """

    gamma = ((Tc * M**3 * N_A**2)/(R**5 * Pc**4))**(1/6)
    vc = Zc*R*Tc/Pc
    rhor = vc/v

    if rhor < 0.5:
        a = 1.22e-2*(exp(0.535*rhor) - 1)
    elif rhor < 2.0:
        a = 1.14e-2*(exp(0.67*rhor) - 1.069)
    elif rhor < 2.8:
        a = 2.60e-3*(exp(1.155*rhor) + 2.016)
    else:
        raise ValueError("Invalid `rhor` input. Valid range: `rhor` < 2.8.")

    return a/(gamma * Zc**5)
Gas Liquid
DIPPR equations DIPPR100, DIPPR102 DIPPR100
Estimation methods
Mixing rules KVMX2_Wassilijewa KLMX2_Li
Pressure correction KVPC_Stiel_Thodos, KVMXPC_Stiel_Thodos

Tutorial