Skip to content

polykin.properties.viscosity¤

MUVMXPC_Dean_Stiel ¤

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

Calculate the effect of pressure (or density) on the viscosity of gas mixtures using the method of Dean and Stiel for nonpolar components.

\[ (\mu_m -\mu_m^\circ)\xi = f(\rho_r) \]

where \(\mu_m\) is the dense gas mixture viscosity, \(\mu_m^\circ\) is the low-pressure gas mixture viscosity, \(\xi\) is a group of constants, and \(\rho_r = v_c / v\) is the reduced gas density. This equation is valid in the range \(0 \le \rho_r < 2.5\).

References

  • Dean, D., and Stiel, L. "The viscosity of nonpolar gas mixtures at moderate and high pressures." AIChE Journal 11.3 (1965): 526-532.
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

RETURNS DESCRIPTION
float

Residual viscosity, \((\mu_m - \mu_m^\circ)\). Unit = Pa·s.

Examples:

Estimate the residual viscosity of a 50 mol% ethylene/propylene mixture t 350 K and 100 bar.

>>> from polykin.properties.viscosity import MUVMXPC_Dean_Stiel
>>> v = 1.12e-4  # m³/mol, with Peng-Robinson
>>> y = [0.5, 0.5]
>>> M = [28.05e-3, 42.08e-3] # kg/mol
>>> Tc = [282.4, 364.9]      # K
>>> Pc = [50.4e5, 46.0e5]    # Pa
>>> Zc = [0.280, 0.274]
>>> mu_residual = MUVMXPC_Dean_Stiel(v, y, M, Tc, Pc, Zc)
>>> print(f"{mu_residual:.2e} Pa·s")
2.32e-05 Pa·s
Source code in src/polykin/properties/viscosity/vapor.py
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
177
178
179
180
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
def MUVMXPC_Dean_Stiel(v: float,
                       y: FloatVectorLike,
                       M: FloatVectorLike,
                       Tc: FloatVectorLike,
                       Pc: FloatVectorLike,
                       Zc: FloatVectorLike,
                       ) -> float:
    r"""Calculate the effect of pressure (or density) on the viscosity of
    gas mixtures using the method of Dean and Stiel for nonpolar components.

    $$ (\mu_m -\mu_m^\circ)\xi = f(\rho_r) $$

    where $\mu_m$ is the dense gas mixture viscosity, $\mu_m^\circ$ is the
    low-pressure gas mixture viscosity, $\xi$ is a group of constants, and
    $\rho_r = v_c / v$ is the reduced gas density. This
    equation is valid in the range $0 \le \rho_r < 2.5$.

    **References**

    *   Dean, D., and Stiel, L. "The viscosity of nonpolar gas mixtures at
        moderate and high pressures." AIChE Journal 11.3 (1965): 526-532.

    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.

    Returns
    -------
    float
        Residual viscosity, $(\mu_m - \mu_m^\circ)$. Unit = Pa·s.

    Examples
    --------
    Estimate the residual viscosity of a 50 mol% ethylene/propylene mixture
    t 350 K and 100 bar.

    >>> from polykin.properties.viscosity import MUVMXPC_Dean_Stiel
    >>> v = 1.12e-4  # m³/mol, with Peng-Robinson
    >>> y = [0.5, 0.5]
    >>> M = [28.05e-3, 42.08e-3] # kg/mol
    >>> Tc = [282.4, 364.9]      # K
    >>> Pc = [50.4e5, 46.0e5]    # Pa
    >>> Zc = [0.280, 0.274]
    >>> mu_residual = MUVMXPC_Dean_Stiel(v, y, M, Tc, Pc, Zc)
    >>> print(f"{mu_residual:.2e} Pa·s")
    2.32e-05 Pa·s
    """

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

    # Mixing rules recommended in paper
    M_mix = dot(y, M)
    Tc_mix, Pc_mix, vc_mix, _, _ = pseudocritical_properties(y, Tc, Pc, Zc)

    rhor = vc_mix/v
    # xi = 1e3*Tc_mix**(1/6)/(sqrt(M_mix*1e3)*(Pc_mix/101325)**(2/3))
    xi = 6.87e4*Tc_mix**(1/6)/(sqrt(M_mix)*(Pc_mix)**(2/3))
    a = 10.8e-5*(exp(1.439*rhor) - exp(-1.111*rhor**1.858))

    return a/xi