thermo.viscosity module¶

thermo.viscosity.
ViswanathNatarajan2
(T, A, B)[source]¶ This function is known to produce values 10 times too low. The author’s data must have an error. I have adjusted it to fix this.
# DDBST has 0.0004580 as a value at this temperature >>> ViswanathNatarajan2(348.15, 5.9719, 1007.0) 0.00045983686956829517

thermo.viscosity.
ViswanathNatarajan2Exponential
(T, C, D)[source]¶ This function is genuinely bad at what it does.
>>> ViswanathNatarajan2Exponential(298.15, 4900800, 3.8075) 0.0018571903840928496

thermo.viscosity.
ViswanathNatarajan3
(T, A, B, C)[source]¶ Calculate the viscosity of a liquid using the 3term Antoine form representation developed in [R13441372]. Requires input coefficients. The A coefficient is assumed to yield coefficients in centipoise, as all coefficients found so far have been.
\[\log_{10} \mu = A + B/(T + C)\]Parameters: T : float
Temperature of fluid [K]
Returns: mu : float
Liquid viscosity, [Pa*s]
Notes
No other source for these coefficients has been found.
References
[R13441372] (1, 2) Viswanath, Dabir S., and G. Natarajan. Databook On The Viscosity Of Liquids. New York: Taylor & Francis, 1989 Examples
>>> ViswanathNatarajan3(298.15, 2.7173, 1071.18, 129.51) 0.0006129806445142112

thermo.viscosity.
Letsou_Stiel
(T, MW, Tc, Pc, omega)[source]¶ Calculates the viscosity of a liquid using an emperical model developed in [R13451373]. However. the fitting parameters for tabulated values in the original article are found in ChemSep.
\[ \begin{align}\begin{aligned}\xi = \frac{2173.424 T_c^{1/6}}{\sqrt{MW} P_c^{2/3}}\\\xi^{(0)} = (1.5174  2.135T_r + 0.75T_r^2)\cdot 10^{5}\\\xi^{(1)} = (4.2552  7.674 T_r + 3.4 T_r^2)\cdot 10^{5}\\\mu = (\xi^{(0)} + \omega \xi^{(1)})/\xi\end{aligned}\end{align} \]Parameters: T : float
Temperature of fluid [K]
MW : float
Molwcular weight of fluid [g/mol]
Tc : float
Critical temperature of the fluid [K]
Pc : float
Critical pressure of the fluid [Pa]
omega : float
Acentric factor of compound
Returns: mu_l : float
Viscosity of liquid, [Pa*S]
Notes
The form of this equation is a polynomial fit to tabulated data. The fitting was performed by the DIPPR. This is DIPPR Procedure 8G: Method for the viscosity of pure, nonhydrocarbon liquids at high temperatures internal units are SI standard. [R13451373]‘s units were different. DIPPR test value for ethanol is used.
Average error 34%. Range of applicability is 0.76 < Tr < 0.98.
References
[R13451373] (1, 2, 3) Letsou, Athena, and Leonard I. Stiel. “Viscosity of Saturated Nonpolar Liquids at Elevated Pressures.” AIChE Journal 19, no. 2 (1973): 40911. doi:10.1002/aic.690190241. Examples
>>> Letsou_Stiel(400., 46.07, 516.25, 6.383E6, 0.6371) 0.0002036150875308151

thermo.viscosity.
Przedziecki_Sridhar
(T, Tm, Tc, Pc, Vc, Vm, omega, MW)[source]¶ Calculates the viscosity of a liquid using an emperical formula developed in [R13461374].
\[ \begin{align}\begin{aligned}\mu=\frac{V_o}{E(VV_o)}\\E=1.12+\frac{V_c}{12.94+0.10MW0.23P_c+0.0424T_{m}11.58(T_{m}/T_c)}\\V_o = 0.0085\omega T_c2.02+\frac{V_{m}}{0.342(T_m/T_c)+0.894}\end{aligned}\end{align} \]Parameters: T : float
Temperature of the fluid [K]
Tm : float
Melting point of fluid [K]
Tc : float
Critical temperature of the fluid [K]
Pc : float
Critical pressure of the fluid [Pa]
Vc : float
Critical volume of the fluid [m^3/mol]
Vm : float
Molar volume of the fluid at temperature [K]
omega : float
Acentric factor of compound
MW : float
Molwcular weight of fluid [g/mol]
Returns: mu_l : float
Viscosity of liquid, [Pa*S]
Notes
A test by Reid (1983) is used, but only mostly correct. This function is not recommended. Its use has been removed from the Liquid Viscosity function. Internal units are bar and mL/mol. TODO: Test again with data from 5th ed table.
References
[R13461374] (1, 2) Przedziecki, J. W., and T. Sridhar. “Prediction of Liquid Viscosities.” AIChE Journal 31, no. 2 (February 1, 1985): 33335. doi:10.1002/aic.690310225. Examples
>>> Przedziecki_Sridhar(383., 178., 591.8, 41E5, 316E6, 95E6, .263, 92.14) 0.0002198147995603383

thermo.viscosity.
viscosity_liquid_methods
= ['COOLPROP', 'DIPPR_PERRY_8E', 'VDI_PPDS', 'DUTT_PRASAD', 'VISWANATH_NATARAJAN_3', 'VISWANATH_NATARAJAN_2', 'VISWANATH_NATARAJAN_2E', 'VDI_TABULAR', 'LETSOU_STIEL', 'PRZEDZIECKI_SRIDHAR']¶ Holds all lowpressure methods available for the ViscosityLiquid class, for use in iterating over them.

thermo.viscosity.
viscosity_liquid_methods_P
= ['COOLPROP', 'LUCAS']¶ Holds all highpressure methods available for the ViscosityLiquid class, for use in iterating over them.

class
thermo.viscosity.
ViscosityLiquid
(CASRN='', MW=None, Tm=None, Tc=None, Pc=None, Vc=None, omega=None, Psat=None, Vml=None)[source]¶ Bases:
thermo.utils.TPDependentProperty
Class for dealing with liquid viscosity as a function of temperature and pressure.
For lowpressure (at 1 atm while under the vapor pressure; along the saturation line otherwise) liquids, there are six coefficientbased methods from three data sources, one source of tabular information, two correspondingstates estimators, and the external library CoolProp.
For highpressure liquids (also, <1 atm liquids), there is one correspondingstates estimator, and the external library CoolProp.
Parameters: CASRN : str, optional
The CAS number of the chemical
MW : float, optional
Molecular weight, [g/mol]
Tm : float, optional
Melting point, [K]
Tc : float, optional
Critical temperature, [K]
Pc : float, optional
Critical pressure, [Pa]
Vc : float, optional
Critical volume, [m^3/mol]
omega : float, optional
Acentric factor, []
Psat : float or callable, optional
Vapor pressure at a given temperature or callable for the same, [Pa]
Vml : float or callable, optional
Liquid molar volume at a given temperature and pressure or callable for the same, [m^3/mol]
See also
ViswanathNatarajan3
,ViswanathNatarajan2
,ViswanathNatarajan2Exponential
,Letsou_Stiel
,Przedziecki_Sridhar
,Lucas
Notes
To iterate over all methods, use the lists stored in
viscosity_liquid_methods
andviscosity_liquid_methods_P
for low and high pressure methods respectively.Low pressure methods:
 DUTT_PRASAD:
 A simple function as expressed in [R13471375], with data available for
100 fluids. Temperature limits are available for all fluids. See
ViswanathNatarajan3
for details.  VISWANATH_NATARAJAN_3:
 A simple function as expressed in [R13471375], with data available for
432 fluids. Temperature limits are available for all fluids. See
ViswanathNatarajan3
for details.  VN2_data:
 A simple function as expressed in [R13471375], with data available for
135 fluids. Temperature limits are available for all fluids. See
ViswanathNatarajan2
for details.  VISWANATH_NATARAJAN_2E:
 A simple function as expressed in [R13471375], with data available for
14 fluids. Temperature limits are available for all fluids. See
ViswanathNatarajan2Exponential
for details.  DIPPR_PERRY_8E:
 A collection of 337 coefficient sets from the DIPPR database published
openly in [R13501375]. Provides temperature limits for all its fluids.
thermo.dippr.EQ101
is used for its fluids.  LETSOU_STIEL:
 CSP method, described in
Letsou_Stiel
.  PRZEDZIECKI_SRIDHAR:
 CSP method, described in
Przedziecki_Sridhar
.  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 [R13481375]. Very slow.
 VDI_TABULAR:
 Tabular data in [R13491375] 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 [R13491375]. Provides no temperature limits, but has been designed for extrapolation. Extrapolated to low temperatures it provides a smooth exponential increase. However, for some chemicals such as glycerol, extrapolated to higher temperatures viscosity is predicted to increase above a certain point.
High pressure methods:
 LUCAS:
 CSP method, described in
Lucas
. Calculates a lowpressure liquid viscosity first, using T_dependent_property.  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 [5]_. Very slow, but unparalled in accuracy for pressure dependence.
References
[R13471375] (1, 2, 3, 4, 5) Viswanath, Dabir S., and G. Natarajan. Databook On The Viscosity Of Liquids. New York: Taylor & Francis, 1989 [R13481375] (1, 2) Bell, Ian H., Jorrit Wronski, Sylvain Quoilin, and Vincent Lemort. “Pure and PseudoPure Fluid Thermophysical Property Evaluation and the OpenSource Thermophysical Property Library CoolProp.” Industrial & Engineering Chemistry Research 53, no. 6 (February 12, 2014): 24982508. doi:10.1021/ie4033999. http://www.coolprop.org/ [R13491375] (1, 2, 3) Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010. [R13501375] (1, 2) Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGrawHill Professional, 2007. Attributes
TP_cached T_cached interpolation_P interpolation_T interpolation_property interpolation_property_inv method method_P Methods
TP_dependent_property
(T, P)Method to calculate the property with sanity checking and without specifying a specific method. TP_dependent_property_derivative_P
(T, P[, order])Method to calculate a derivative of a temperature and pressure dependent property with respect to pressure at constant temperature, of a given order. TP_dependent_property_derivative_T
(T, P[, order])Method to calculate a derivative of a temperature and pressure dependent property with respect to temperature at constant pressure, of a given order. TP_or_T_dependent_property
(T, P)T_dependent_property
(T)Method to calculate the property with sanity checking and without specifying a specific method. T_dependent_property_derivative
(T[, order])Method to obtain a derivative of a property with respect to temperature, of a given order. T_dependent_property_integral
(T1, T2)Method to calculate the integral of a property with respect to temperature, using a specified method. T_dependent_property_integral_over_T
(T1, T2)Method to calculate the integral of a property over temperature with respect to temperature, using a specified method. __call__
(T, P)Convenience method to calculate the property; calls TP_dependent_property
.calculate
(T, method)Method to calculate lowpressure liquid viscosity at tempearture T with a given method. calculate_P
(T, P, method)Method to calculate pressuredependent liquid viscosity at temperature T and pressure P with a given method. calculate_derivative
(T, method[, order])Method to calculate a derivative of a property with respect to temperature, of a given order using a specified method. calculate_derivative_P
(P, T, method[, order])Method to calculate a derivative of a temperature and pressure dependent property with respect to pressure at constant temperature, of a given order using a specified method. calculate_derivative_T
(T, P, method[, order])Method to calculate a derivative of a temperature and pressure dependent property with respect to temperature at constant pressure, of a given order using a specified method. calculate_integral
(T1, T2, method)Method to calculate the integral of a property with respect to temperature, using a specified method. calculate_integral_over_T
(T1, T2, method)Method to calculate the integral of a property over temperature with respect to temperature, using a specified method. extrapolate_tabular
(T)interpolate
(T, name)Method to perform interpolation on a given tabular data set previously added via set_tabular_data
.interpolate_P
(T, P, name)Method to perform interpolation on a given tabular data set previously added via set_tabular_data_P. load_all_methods
()Method which picks out coefficients for the specified chemical from the various dictionaries and DataFrames storing it. plot_TP_dependent_property
([Tmin, Tmax, ...])Method to create a plot of the property vs temperature and pressure according to either a specified list of methods, or user methods (if set), or all methods. plot_T_dependent_property
([Tmin, Tmax, ...])Method to create a plot of the property vs temperature according to either a specified list of methods, or user methods (if set), or all methods. plot_isobar
(P[, Tmin, Tmax, methods_P, pts, ...])Method to create a plot of the property vs temperature at a specific pressure according to either a specified list of methods, or user methods (if set), or all methods. plot_isotherm
(T[, Pmin, Pmax, methods_P, ...])Method to create a plot of the property vs pressure at a specified temperature according to either a specified list of methods, or the user methods (if set), or all methods. select_valid_methods
(T)Method to obtain a sorted list of methods which are valid at T according to test_method_validity. select_valid_methods_P
(T, P)Method to obtain a sorted list methods which are valid at T according to test_method_validity. set_tabular_data
(Ts, properties[, name, ...])Method to set tabular data to be used for interpolation. set_tabular_data_P
(Ts, Ps, properties[, ...])Method to set tabular data to be used for interpolation. set_user_methods
(user_methods[, forced])Method used to select certain property methods as having a higher priority than were set by default. set_user_methods_P
(user_methods_P[, forced_P])Method to set the pressuredependent property methods desired for consideration by the user. solve_prop
(goal[, reset_method])Method to solve for the temperature at which a property is at a specified value. test_method_validity
(T, method)Method to check the validity of a method. test_method_validity_P
(T, P, method)Method to check the validity of a highpressure method. test_property_validity
(prop)Method to test the validity of a calculated property. 
Tmax
= None¶ Maximum temperature at which no method can calculate the liquid viscosity above.

Tmin
= None¶ Minimum temperature at which no method can calculate the liquid viscosity under.

all_methods
= None¶ Set of all lowpressure methods available for a given CASRN and properties; filled by
load_all_methods
.

all_methods_P
= None¶ Set of all highpressure methods available for a given CASRN and properties; filled by
load_all_methods
.

calculate
(T, method)[source]¶ Method to calculate lowpressure liquid viscosity at tempearture T with a given method.
This method has no exception handling; see T_dependent_property for that.
Parameters: T : float
Temperature at which to calculate viscosity, [K]
method : str
Name of the method to use
Returns: mu : float
Viscosity of the liquid at T and a low pressure, [Pa*S]

calculate_P
(T, P, method)[source]¶ Method to calculate pressuredependent liquid viscosity at temperature T and pressure P with a given method.
This method has no exception handling; see TP_dependent_property for that.
Parameters: T : float
Temperature at which to calculate viscosity, [K]
P : float
Pressure at which to calculate viscosity, [K]
method : str
Name of the method to use
Returns: mu : float
Viscosity of the liquid at T and P, [Pa*S]

interpolation_P
= None¶ No interpolation transformation by default.

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.

load_all_methods
()[source]¶ Method which picks out coefficients for the specified chemical from the various dictionaries and DataFrames storing it. All data is stored as attributes. This method also sets
Tmin
,Tmax
,all_methods
and obj:all_methods_P as a set of methods for which the data exists for.Called on initialization only. See the source code for the variables at which the coefficients are stored. The coefficients can safely be altered once the class is initialized. This method can be called again to reset the parameters.

name
= 'liquid viscosity'¶

property_max
= 200000000.0¶ Maximum valid value of liquid viscosity. Generous limit, as the value is that of bitumen in a Pitch drop experiment.

property_min
= 0¶ Mimimum valid value of liquid viscosity.

ranked_methods
= ['COOLPROP', 'DIPPR_PERRY_8E', 'VDI_PPDS', 'DUTT_PRASAD', 'VISWANATH_NATARAJAN_3', 'VISWANATH_NATARAJAN_2', 'VISWANATH_NATARAJAN_2E', 'VDI_TABULAR', 'LETSOU_STIEL', 'PRZEDZIECKI_SRIDHAR']¶ Default rankings of the lowpressure methods.

ranked_methods_P
= ['COOLPROP', 'LUCAS']¶ Default rankings of the highpressure methods.

sorted_valid_methods
= None¶ sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by T_dependent_property.

sorted_valid_methods_P
= None¶ sorted_valid_methods_P, list: Stored methods which were found valid at a specific temperature; set by TP_dependent_property.

tabular_data
= None¶ tabular_data, dict: Stored (Ts, properties) for any tabular data; indexed by provided or autogenerated name.

tabular_data_P
= None¶ tabular_data_P, dict: Stored (Ts, Ps, properties) for any tabular data; indexed by provided or autogenerated name.

tabular_data_interpolators
= None¶ tabular_data_interpolators, dict: Stored (extrapolator, spline) tuples which are interp1d instances for each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_property, interpolation_property_inv) to ensure that if an interpolation transform is altered, the old interpolator which had been created is no longer used.

tabular_data_interpolators_P
= None¶ tabular_data_interpolators_P, dict: Stored (extrapolator, spline) tuples which are interp2d instances for each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_P, interpolation_property, interpolation_property_inv) to ensure that if an interpolation transform is altered, the old interpolator which had been created is no longer used.

tabular_extrapolation_permitted
= True¶ Allow tabular extrapolation by default.

test_method_validity
(T, method)[source]¶ Method to check the validity of a method. Follows the given ranges for all coefficientbased methods. 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.
Parameters: T : float
Temperature at which to test the method, [K]
method : str
Name of the method to test
Returns: validity : bool
Whether or not a method is valid

test_method_validity_P
(T, P, method)[source]¶ Method to check the validity of a highpressure method. For COOLPROP, the fluid must be both a liquid and under the maximum pressure of the fluid’s EOS. LUCAS doesn’t work on some occasions, due to something related to Tr and negative powers  but is otherwise considered correct for all circumstances.
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 and pressures.Parameters: T : float
Temperature at which to test the method, [K]
P : float
Pressure at which to test the method, [Pa]
method : str
Name of the method to test
Returns: validity : bool
Whether or not a method is valid

units
= 'Pa*s'¶

user_methods
= None¶ user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set by T_dependent_property.

user_methods_P
= None¶ user_methods_P, list: Stored methods which were specified by the user in a ranked order of preference; set by TP_dependent_property.

class
thermo.viscosity.
ViscosityGas
(CASRN='', MW=None, Tc=None, Pc=None, Zc=None, dipole=None, Vmg=None)[source]¶ Bases:
thermo.utils.TPDependentProperty
Class for dealing with gas viscosity as a function of temperature and pressure.
For gases at atmospheric pressure, there are 4 correspondingstates estimators, two sources of coefficientbased models, one source of tabular information, and the external library CoolProp.
For gases under the fluid’s boiling point (at subatmospheric pressures), and highpressure gases above the boiling point, there are zero correspondingstates estimators, and the external library CoolProp.
Parameters: CASRN : str, optional
The CAS number of the chemical
MW : float, optional
Molecular weight, [g/mol]
Tc : float, optional
Critical temperature, [K]
Pc : float, optional
Critical pressure, [Pa]
Zc : float, optional
Critical compressibility, []
dipole : float, optional
Dipole moment of the fluid, [debye]
Vmg : float, optional
Molar volume of the fluid at a pressure and temperature, [m^3/mol]
See also
Gharagheizi_gas_viscosity
,Yoon_Thodos
,Stiel_Thodos
,lucas_gas
Notes
A string holding each method’s name is assigned to the following variables in this module, intended as the most convenient way to refer to a method. To iterate over all methods, use the lists stored in
viscosity_gas_methods
andviscosity_gas_methods_P
for low and high pressure methods respectively.Low pressure methods:
 GHARAGHEIZI:
 CSP method, described in
Gharagheizi_gas_viscosity
.  YOON_THODOS:
 CSP method, described in
Yoon_Thodos
.  STIEL_THODOS:
 CSP method, described in
Stiel_Thodos
.  LUCAS_GAS:
 CSP method, described in
lucas_gas
.  DIPPR_PERRY_8E:
 A collection of 345 coefficient sets from the DIPPR database published
openly in [R13531379]. Provides temperature limits for all its fluids.
thermo.dippr.EQ102
is used for its fluids.  VDI_PPDS:
 Coefficients for a equation form developed by the PPDS, published openly in [R13521379]. Provides no temperature limits, but provides reasonable values at fairly high and very low temperatures.
 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 [R13511379]. Very slow.
 VDI_TABULAR:
 Tabular data in [R13521379] along the saturation curve; interpolation is as set by the user or the default.
High pressure methods:
 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 [R13511379]. Very slow, but unparalled in accuracy for pressure dependence.
References
[R13511379] (1, 2, 3) Bell, Ian H., Jorrit Wronski, Sylvain Quoilin, and Vincent Lemort. “Pure and PseudoPure Fluid Thermophysical Property Evaluation and the OpenSource Thermophysical Property Library CoolProp.” Industrial & Engineering Chemistry Research 53, no. 6 (February 12, 2014): 24982508. doi:10.1021/ie4033999. http://www.coolprop.org/ [R13521379] (1, 2, 3) Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010. [R13531379] (1, 2) Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGrawHill Professional, 2007. Attributes
TP_cached T_cached interpolation_P interpolation_T interpolation_property interpolation_property_inv method method_P Methods
TP_dependent_property
(T, P)Method to calculate the property with sanity checking and without specifying a specific method. TP_dependent_property_derivative_P
(T, P[, order])Method to calculate a derivative of a temperature and pressure dependent property with respect to pressure at constant temperature, of a given order. TP_dependent_property_derivative_T
(T, P[, order])Method to calculate a derivative of a temperature and pressure dependent property with respect to temperature at constant pressure, of a given order. TP_or_T_dependent_property
(T, P)T_dependent_property
(T)Method to calculate the property with sanity checking and without specifying a specific method. T_dependent_property_derivative
(T[, order])Method to obtain a derivative of a property with respect to temperature, of a given order. T_dependent_property_integral
(T1, T2)Method to calculate the integral of a property with respect to temperature, using a specified method. T_dependent_property_integral_over_T
(T1, T2)Method to calculate the integral of a property over temperature with respect to temperature, using a specified method. __call__
(T, P)Convenience method to calculate the property; calls TP_dependent_property
.calculate
(T, method)Method to calculate lowpressure gas viscosity at tempearture T with a given method. calculate_P
(T, P, method)Method to calculate pressuredependent gas viscosity at temperature T and pressure P with a given method. calculate_derivative
(T, method[, order])Method to calculate a derivative of a property with respect to temperature, of a given order using a specified method. calculate_derivative_P
(P, T, method[, order])Method to calculate a derivative of a temperature and pressure dependent property with respect to pressure at constant temperature, of a given order using a specified method. calculate_derivative_T
(T, P, method[, order])Method to calculate a derivative of a temperature and pressure dependent property with respect to temperature at constant pressure, of a given order using a specified method. calculate_integral
(T1, T2, method)Method to calculate the integral of a property with respect to temperature, using a specified method. calculate_integral_over_T
(T1, T2, method)Method to calculate the integral of a property over temperature with respect to temperature, using a specified method. extrapolate_tabular
(T)interpolate
(T, name)Method to perform interpolation on a given tabular data set previously added via set_tabular_data
.interpolate_P
(T, P, name)Method to perform interpolation on a given tabular data set previously added via set_tabular_data_P. load_all_methods
()Method which picks out coefficients for the specified chemical from the various dictionaries and DataFrames storing it. plot_TP_dependent_property
([Tmin, Tmax, ...])Method to create a plot of the property vs temperature and pressure according to either a specified list of methods, or user methods (if set), or all methods. plot_T_dependent_property
([Tmin, Tmax, ...])Method to create a plot of the property vs temperature according to either a specified list of methods, or user methods (if set), or all methods. plot_isobar
(P[, Tmin, Tmax, methods_P, pts, ...])Method to create a plot of the property vs temperature at a specific pressure according to either a specified list of methods, or user methods (if set), or all methods. plot_isotherm
(T[, Pmin, Pmax, methods_P, ...])Method to create a plot of the property vs pressure at a specified temperature according to either a specified list of methods, or the user methods (if set), or all methods. select_valid_methods
(T)Method to obtain a sorted list of methods which are valid at T according to test_method_validity. select_valid_methods_P
(T, P)Method to obtain a sorted list methods which are valid at T according to test_method_validity. set_tabular_data
(Ts, properties[, name, ...])Method to set tabular data to be used for interpolation. set_tabular_data_P
(Ts, Ps, properties[, ...])Method to set tabular data to be used for interpolation. set_user_methods
(user_methods[, forced])Method used to select certain property methods as having a higher priority than were set by default. set_user_methods_P
(user_methods_P[, forced_P])Method to set the pressuredependent property methods desired for consideration by the user. solve_prop
(goal[, reset_method])Method to solve for the temperature at which a property is at a specified value. test_method_validity
(T, method)Method to check the validity of a temperaturedependent lowpressure method. test_method_validity_P
(T, P, method)Method to check the validity of a highpressure method. test_property_validity
(prop)Method to test the validity of a calculated property. 
Tmax
= None¶ Maximum temperature at which no method can calculate the gas viscosity above.

Tmin
= None¶ Minimum temperature at which no method can calculate the gas viscosity under.

all_methods
= None¶ Set of all lowpressure methods available for a given CASRN and properties; filled by
load_all_methods
.

all_methods_P
= None¶ Set of all highpressure methods available for a given CASRN and properties; filled by
load_all_methods
.

calculate
(T, method)[source]¶ Method to calculate lowpressure gas viscosity at tempearture T with a given method.
This method has no exception handling; see T_dependent_property for that.
Parameters: T : float
Temperature of the gas, [K]
method : str
Name of the method to use
Returns: mu : float
Viscosity of the gas at T and a low pressure, [Pa*S]

calculate_P
(T, P, method)[source]¶ Method to calculate pressuredependent gas viscosity at temperature T and pressure P with a given method.
This method has no exception handling; see TP_dependent_property for that.
Parameters: T : float
Temperature at which to calculate gas viscosity, [K]
P : float
Pressure at which to calculate gas viscosity, [K]
method : str
Name of the method to use
Returns: mu : float
Viscosity of the gas at T and P, [Pa*]

interpolation_P
= None¶ No interpolation transformation by default.

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.

load_all_methods
()[source]¶ Method which picks out coefficients for the specified chemical from the various dictionaries and DataFrames storing it. All data is stored as attributes. This method also sets
Tmin
,Tmax
,all_methods
and obj:all_methods_P as a set of methods for which the data exists for.Called on initialization only. See the source code for the variables at which the coefficients are stored. The coefficients can safely be altered once the class is initialized. This method can be called again to reset the parameters.

name
= 'Gas viscosity'¶

property_max
= 0.001¶ Maximum valid value of gas viscosity. Might be too high, or too low.

property_min
= 0¶ Mimimum valid value of gas viscosity; limiting condition at low pressure is 0.

ranked_methods
= ['COOLPROP', 'DIPPR_PERRY_8E', 'VDI_PPDS', 'VDI_TABULAR', 'GHARAGHEIZI', 'YOON_THODOS', 'STIEL_THODOS', 'LUCAS_GAS']¶ Default rankings of the lowpressure methods.

ranked_methods_P
= ['COOLPROP']¶ Default rankings of the highpressure methods.

sorted_valid_methods
= None¶ sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by T_dependent_property.

sorted_valid_methods_P
= None¶ sorted_valid_methods_P, list: Stored methods which were found valid at a specific temperature; set by TP_dependent_property.

tabular_data
= None¶ tabular_data, dict: Stored (Ts, properties) for any tabular data; indexed by provided or autogenerated name.

tabular_data_P
= None¶ tabular_data_P, dict: Stored (Ts, Ps, properties) for any tabular data; indexed by provided or autogenerated name.

tabular_data_interpolators
= None¶ tabular_data_interpolators, dict: Stored (extrapolator, spline) tuples which are interp1d instances for each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_property, interpolation_property_inv) to ensure that if an interpolation transform is altered, the old interpolator which had been created is no longer used.

tabular_data_interpolators_P
= None¶ tabular_data_interpolators_P, dict: Stored (extrapolator, spline) tuples which are interp2d instances for each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_P, interpolation_property, interpolation_property_inv) to ensure that if an interpolation transform is altered, the old interpolator which had been created is no longer used.

tabular_extrapolation_permitted
= True¶ Allow tabular extrapolation by default.

test_method_validity
(T, method)[source]¶ Method to check the validity of a temperaturedependent lowpressure method. For CSP most methods, the all methods are considered valid from 0 K up to 5000 K. For method GHARAGHEIZI, the method is considered valud from 20 K to 2000 K.
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: T : float
Temperature at which to test the method, [K]
method : str
Name of the method to test
Returns: validity : bool
Whether or not a method is valid

test_method_validity_P
(T, P, method)[source]¶ Method to check the validity of a highpressure method. For COOLPROP, the fluid must be both a gas and under the maximum pressure of the fluid’s EOS. No other methods are implemented.
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 and pressures.It is not guaranteed that a method will work or give an accurate prediction simply because this method considers the method valid.
Parameters: T : float
Temperature at which to test the method, [K]
P : float
Pressure at which to test the method, [Pa]
method : str
Name of the method to test
Returns: validity : bool
Whether or not a method is valid

units
= 'Pa*s'¶

user_methods
= None¶ user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set by T_dependent_property.

user_methods_P
= None¶ user_methods_P, list: Stored methods which were specified by the user in a ranked order of preference; set by TP_dependent_property.

thermo.viscosity.
Lucas
(T, P, Tc, Pc, omega, P_sat, mu_l)[source]¶ Adjustes for pressure the viscosity of a liquid using an emperical formula developed in [R13541382], but as discussed in [R13551382] as the original source is in German.
\[ \begin{align}\begin{aligned}\frac{\mu}{\mu_{sat}}=\frac{1+D(\Delta P_r/2.118)^A}{1+C\omega \Delta P_r}\\\Delta P_r = \frac{PP^{sat}}{P_c}\\A=0.9991\frac{4.674\times 10^{4}}{1.0523T_r^{0.03877}1.0513}\\D = \frac{0.3257}{(1.0039T_r^{2.573})^{0.2906}}0.2086\\C = 0.07921+2.1616T_r13.4040T_r^2+44.1706T_r^384.8291T_r^4+ 96.1209T_r^559.8127T_r^6+15.6719T_r^7\end{aligned}\end{align} \]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]
omega : float
Acentric factor of compound
P_sat : float
Saturation pressure of the fluid [Pa]
mu_l : float
Viscosity of liquid at 1 atm or saturation, [Pa*S]
Returns: mu_l_dense : float
Viscosity of liquid, [Pa*s]
Notes
This equation is entirely dimensionless; all dimensions cancel. The example is from Reid (1987); all results agree. Above several thousand bar, this equation does not represent true behavior. If Psat is larger than P, the fluid may not be liquid; dPr is set to 0.
References
[R13541382] (1, 2) Lucas, Klaus. “Ein Einfaches Verfahren Zur Berechnung Der Viskositat von Gasen Und Gasgemischen.” Chemie Ingenieur Technik 46, no. 4 (February 1, 1974): 157157. doi:10.1002/cite.330460413. [R13551382] (1, 2) Reid, Robert C.; Prausnitz, John M.; Poling, Bruce E. Properties of Gases and Liquids. McGrawHill Companies, 1987. Examples
>>> Lucas(300., 500E5, 572.2, 34.7E5, 0.236, 0, 0.00068) # methylcyclohexane 0.0010683738499316518

thermo.viscosity.
Yoon_Thodos
(T, Tc, Pc, MW)[source]¶ Calculates the viscosity of a gas using an emperical formula developed in [R13561384].
\[ \begin{align}\begin{aligned}\eta \xi \times 10^8 = 46.10 T_r^{0.618}  20.40 \exp(0.449T_r) + 1 9.40\exp(4.058T_r)+1\\\xi = 2173.424 T_c^{1/6} MW^{1/2} P_c^{2/3}\end{aligned}\end{align} \]Parameters: T : float
Temperature of the fluid [K]
Tc : float
Critical temperature of the fluid [K]
Pc : float
Critical pressure of the fluid [Pa]
MW : float
Molwcular weight of fluid [g/mol]
Returns: mu_g : float
Viscosity of gas, [Pa*S]
Notes
This equation has been tested. The equation uses SI units only internally. The constant 2173.424 is an adjustment factor for units. Average deviation within 3% for most compounds. Greatest accuracy with dipole moments close to 0. Hydrogen and helium have different coefficients, not implemented. This is DIPPR Procedure 8B: Method for the Viscosity of Pure, non hydrocarbon, nonpolar gases at low pressures
References
[R13561384] (1, 2) Yoon, Poong, and George Thodos. “Viscosity of Nonpolar Gaseous Mixtures at Normal Pressures.” AIChE Journal 16, no. 2 (1970): 300304. doi:10.1002/aic.690160225. Examples
>>> Yoon_Thodos(300., 556.35, 4.5596E6, 153.8) 1.0194885727776819e05

thermo.viscosity.
Stiel_Thodos
(T, Tc, Pc, MW)[source]¶ Calculates the viscosity of a gas using an emperical formula developed in [R13571385].
\[TODO\]Parameters: T : float
Temperature of the fluid [K]
Tc : float
Critical temperature of the fluid [K]
Pc : float
Critical pressure of the fluid [Pa]
MW : float
Molwcular weight of fluid [g/mol]
Returns: mu_g : float
Viscosity of gas, [Pa*S]
Notes
Untested. Claimed applicability from 0.2 to 5 atm. Developed with data from 52 nonpolar, and 53 polar gases. internal units are poise and atm. Seems to give reasonable results.
References
[R13571385] (1, 2) Stiel, Leonard I., and George Thodos. “The Viscosity of Nonpolar Gases at Normal Pressures.” AIChE Journal 7, no. 4 (1961): 61115. doi:10.1002/aic.690070416. Examples
>>> Stiel_Thodos(300., 556.35, 4.5596E6, 153.8) #CCl4 1.0408926223608723e05

thermo.viscosity.
lucas_gas
(T, Tc, Pc, Zc, MW, dipole=0, CASRN=None)[source]¶ Estimate the viscosity of a gas using an emperical formula developed in several sources, but as discussed in [R13581386] as the original sources are in German or merely personal communications with the authors of [R13581386].
\[ \begin{align}\begin{aligned}\eta = \left[0.807T_r^{0.618}0.357\exp(0.449T_r) + 0.340\exp(4.058 T_r) + 0.018\right]F_p^\circ F_Q^\circ /\xi\\F_p^\circ=1, 0 \le \mu_{r} < 0.022\\F_p^\circ = 1+30.55(0.292Z_c)^{1.72}, 0.022 \le \mu_{r} < 0.075\\F_p^\circ = 1+30.55(0.292Z_c)^{1.72}0.96+0.1(T_r0.7) 0.075 < \mu_{r}\\F_Q^\circ = 1.22Q^{0.15}\left\{ 1+0.00385[(T_r12)^2]^{1/M}\text{sign} (T_r12)\right\}\\\mu_r = 52.46 \frac{\mu^2 P_c}{T_c^2}\\\xi=0.176\left(\frac{T_c}{MW^3 P_c^4}\right)^{1/6}\end{aligned}\end{align} \]Parameters: T : float
Temperature of fluid [K]
Tc: float
Critical point of fluid [K]
Pc : float
Critical pressure of the fluid [Pa]
Zc : float
Critical compressibility of the fluid [Pa]
dipole : float
Dipole moment of fluid [debye]
CASRN : str, optional
CAS of the fluid
Returns: mu_g : float
Viscosity of gas, [Pa*s]
Notes
The example is from [R13581386]; all results agree. Viscosity is calculated in micropoise, and converted to SI internally (1E7). Q for He = 1.38; Q for H2 = 0.76; Q for D2 = 0.52.
References
[R13581386] (1, 2, 3, 4) Reid, Robert C.; Prausnitz, John M.; Poling, Bruce E. Properties of Gases and Liquids. McGrawHill Companies, 1987. Examples
>>> lucas_gas(T=550., Tc=512.6, Pc=80.9E5, Zc=0.224, MW=32.042, dipole=1.7) 1.7822676912698928e05

thermo.viscosity.
Gharagheizi_gas_viscosity
(T, Tc, Pc, MW)[source]¶ Calculates the viscosity of a gas using an emperical formula developed in [R13591387].
\[\mu = 10^{7}  10^{5} P_cT_r + \left(0.091\frac{0.477}{M}\right)T + M \left(10^{5}P_c\frac{8M^2}{T^2}\right) \left(\frac{10.7639}{T_c}\frac{4.1929}{T}\right)\]Parameters: T : float
Temperature of the fluid [K]
Tc : float
Critical temperature of the fluid [K]
Pc : float
Critical pressure of the fluid [Pa]
MW : float
Molwcular weight of fluid [g/mol]
Returns: mu_g : float
Viscosity of gas, [Pa*S]
Notes
Example is first point in supporting information of article, for methane. This is the prefered function for gas viscosity. 7% average relative deviation. Deviation should never be above 30%. Developed with the DIPPR database. It is believed theoretically predicted values are included in the correlation.
References
[R13591387] (1, 2) Gharagheizi, Farhad, Ali Eslamimanesh, Mehdi Sattari, Amir H. Mohammadi, and Dominique Richon. “Corresponding States Method for Determination of the Viscosity of Gases at Atmospheric Pressure.” Industrial & Engineering Chemistry Research 51, no. 7 (February 22, 2012): 317985. doi:10.1021/ie202591f. Examples
>>> Gharagheizi_gas_viscosity(120., 190.564, 45.99E5, 16.04246) 5.215761625399613e06

thermo.viscosity.
viscosity_gas_methods
= ['COOLPROP', 'DIPPR_PERRY_8E', 'VDI_PPDS', 'VDI_TABULAR', 'GHARAGHEIZI', 'YOON_THODOS', 'STIEL_THODOS', 'LUCAS_GAS']¶ Holds all lowpressure methods available for the ViscosityGas class, for use in iterating over them.

thermo.viscosity.
viscosity_gas_methods_P
= ['COOLPROP']¶ Holds all highpressure methods available for the ViscosityGas class, for use in iterating over them.

thermo.viscosity.
Herning_Zipperer
(zs, mus, MWs)[source]¶ Calculates viscosity of a gas mixture according to mixing rules in [R13601388].
\[TODO\]Parameters: zs : float
Mole fractions of components
mus : float
Gas viscosities of all components, [Pa*S]
MWs : float
Molecular weights of all components, [g/mol]
Returns: mug : float
Viscosity of gas mixture, Pa*S]
Notes
This equation is entirely dimensionless; all dimensions cancel. The original source has not been reviewed.
References
[R13601388] (1, 2) Herning, F. and Zipperer, L,: “Calculation of the Viscosity of Technical Gas Mixtures from the Viscosity of Individual Gases, german”, Gas u. Wasserfach (1936) 79, No. 49, 69.

thermo.viscosity.
Wilke
(ys, mus, MWs)[source]¶ Calculates viscosity of a gas mixture according to mixing rules in [R13611389].
\[ \begin{align}\begin{aligned}\eta_{mix} = \sum_{i=1}^n \frac{y_i \eta_i}{\sum_{j=1}^n y_j \phi_{ij}}\\\phi_{ij} = \frac{(1 + \sqrt{\eta_i/\eta_j}(MW_j/MW_i)^{0.25})^2} {\sqrt{8(1+MW_i/MW_j)}}\end{aligned}\end{align} \]Parameters: ys : float
Mole fractions of gas components
mus : float
Gas viscosities of all components, [Pa*S]
MWs : float
Molecular weights of all components, [g/mol]
Returns: mug : float
Viscosity of gas mixture, Pa*S]
Notes
This equation is entirely dimensionless; all dimensions cancel. The original source has not been reviewed or found.
References
[R13611389] (1, 2) TODO Examples
>>> Wilke([0.05, 0.95], [1.34E5, 9.5029E6], [64.06, 46.07]) 9.701614885866193e06

thermo.viscosity.
Brokaw
(T, ys, mus, MWs, molecular_diameters, Stockmayers)[source]¶ Calculates viscosity of a gas mixture according to mixing rules in [R13621390].
\[ \begin{align}\begin{aligned}\eta_{mix} = \sum_{i=1}^n \frac{y_i \eta_i}{\sum_{j=1}^n y_j \phi_{ij}}\\\phi_{ij} = \left( \frac{\eta_i}{\eta_j} \right)^{0.5} S_{ij} A_{ij}\\A_{ij} = m_{ij} M_{ij}^{0.5} \left[1 + \frac{M_{ij}  M_{ij}^{0.45}} {2(1+M_{ij}) + \frac{(1 + M_{ij}^{0.45}) m_{ij}^{0.5}}{1 + m_{ij}}} \right]\\m_{ij} = \left[ \frac{4}{(1+M_{ij}^{1})(1+M_{ij})}\right]^{0.25}\\M_{ij} = \frac{M_i}{M_j}\\S_{ij} = \frac{1 + (T_i^* T_j^*)^{0.5} + (\delta_i \delta_j/4)} {[1+T_i^* + (\delta_i^2/4)]^{0.5}[1+T_j^*+(\delta_j^2/4)]^{0.5}}\\T^* = kT/\epsilon\end{aligned}\end{align} \]Parameters: T : float
Temperature of fluid, [K]
ys : float
Mole fractions of gas components
mus : float
Gas viscosities of all components, [Pa*S]
MWs : float
Molecular weights of all components, [g/mol]
molecular_diameters : float
LJ molecular diameter of all components, [angstroms]
Stockmayers : float
LJ Stockmayer energy parameters of all components, []
Returns: mug : float
Viscosity of gas mixture, [Pa*S]
Notes
This equation is entirely dimensionless; all dimensions cancel. The original source has not been reviewed.
This is DIPPR Procedure 8D: Method for the Viscosity of Nonhydrocarbon Vapor Mixtures at Low Pressure (Polar and Nonpolar)
References
[R13621390] (1, 2) Brokaw, R. S. “Predicting Transport Properties of Dilute Gases.” Industrial & Engineering Chemistry Process Design and Development 8, no. 2 (April 1, 1969): 24053. doi:10.1021/i260030a015. [R13631390] Brokaw, R. S. Viscosity of Gas Mixtures, NASATND4496, 1968. [R13641390] Danner, Ronald P, and Design Institute for Physical Property Data. Manual for Predicting Chemical Process Design Data. New York, N.Y, 1982. Examples
>>> Brokaw(308.2, [0.05, 0.95], [1.34E5, 9.5029E6], [64.06, 46.07], [0.42, 0.19], [347, 432]) 9.699085099801568e06

thermo.viscosity.
viscosity_index
(nu_40, nu_100, rounding=False)[source]¶ Calculates the viscosity index of a liquid. Requires dynamic viscosity of a liquid at 40°C and 100°C. Value may either be returned with or without rounding. Rounding is performed per the standard.
if nu_100 < 70:
\[L, H = interp(nu_100)\]else:
\[ \begin{align}\begin{aligned}L = 0.8353\nu_{100}^2 + 14.67\nu_{100}  216\\H = 0.1684\nu_{100}^2 + 11.85\nu_{100}  97\end{aligned}\end{align} \]if nu_40 > H:
\[VI = \frac{Lnu_{40}}{LH}\cdot 100\]else:
\[ \begin{align}\begin{aligned}N = \frac{\log(H)  \log(\nu_{40})}{\log (\nu_{100})}\\ VI = \frac{10^N1}{0.00715} + 100\end{aligned}\end{align} \]Parameters: nu_40 : float
Dynamic viscosity of fluid at 40°C, [m^2/s]
nu_100 : float
Dynamic viscosity of fluid at 100°C, [m^2/s]
rounding : bool, optional
Whether to round the value or not.
Returns: VI: float
Viscosity index []
Notes
VI is undefined for nu_100 under 2 mm^2/s. None is returned if this is the case. Internal units are mm^2/s. Higher values of viscosity index suggest a lesser decrease in kinematic viscosity as temperature increases.
Note that viscosity is a pressuredependent property, and that the viscosity index is defined for a fluid at whatever pressure it is at. The viscosity index is thus also a function of pressure.
References
[R13651393] ASTM D227010(2016) Standard Practice for Calculating Viscosity Index from Kinematic Viscosity at 40 °C and 100 °C, ASTM International, West Conshohocken, PA, 2016, http://dx.doi.org/10.1520/D227010R16 Examples
>>> viscosity_index(73.3E6, 8.86E6, rounding=True) 92

thermo.viscosity.
viscosity_converter
(val, old_scale, new_scale, extrapolate=False)[source]¶ Converts kinematic viscosity values from different scales which have historically been used. Though they may not be in use much, some standards still specify values in these scales.
Parameters: val : float
Viscosity value in the specified scale; [m^2/s] if ‘kinematic viscosity’; [degrees] if Engler or Barbey; [s] for the other scales.
old_scale : str
String representing the scale that val is in originally.
new_scale : str
String representing the scale that val should be converted to.
extrapolate : bool
If True, a conversion will be performed even if outside the limits of either scale; if False, and either value is outside a limit, an exception will be raised.
Returns: result : float
Viscosity value in the specified scale; [m^2/s] if ‘kinematic viscosity’; [degrees] if Engler or Barbey; [s] for the other scales
Notes
The valid scales for this function are any of the following:
[‘a&w b’, ‘a&w crucible’, ‘american can’, ‘astm 0.07’, ‘astm 0.10’, ‘astm 0.15’, ‘astm 0.20’, ‘astm 0.25’, ‘barbey’, ‘caspers tin plate’, ‘continental can’, ‘crown cork and seal’, ‘demmier #1’, ‘demmier #10’, ‘engler’, ‘ford cup #3’, ‘ford cup #4’, ‘kinematic viscosity’, ‘mac michael’, ‘murphy varnish’, ‘parlin cup #10’, ‘parlin cup #15’, ‘parlin cup #20’, ‘parlin cup #25’, ‘parlin cup #30’, ‘parlin cup #7’, ‘pratt lambert a’, ‘pratt lambert b’, ‘pratt lambert c’, ‘pratt lambert d’, ‘pratt lambert e’, ‘pratt lambert f’, ‘pratt lambert g’, ‘pratt lambert h’, ‘pratt lambert i’, ‘redwood admiralty’, ‘redwood standard’, ‘saybolt furol’, ‘saybolt universal’, ‘scott’, ‘stormer 100g load’, ‘westinghouse’, ‘zahn cup #1’, ‘zahn cup #2’, ‘zahn cup #3’, ‘zahn cup #4’, ‘zahn cup #5’]
Some of those scales are converted linearly; the rest use tabulated data and splines.
Because the conversion is performed by spline functions, a reconversion of a value will not yield exactly the original value. However, it is quite close.
The method ‘Saybolt universal’ has a special formula implemented for its conversion, from [R13691394]. It is designed for maximum backwards compatibility with prior experimental data. It is solved by newton’s method when kinematic viscosity is desired as an output.
\[SUS_{eq} = 4.6324\nu_t + \frac{[1.0 + 0.03264\nu_t]} {[(3930.2 + 262.7\nu_t + 23.97\nu_t^2 + 1.646\nu_t^3)\times10^{5})]}\]References
[R13661394] Hydraulic Institute. Hydraulic Institute Engineering Data Book. Cleveland, Ohio: Hydraulic Institute, 1990. [R13671394] Gardner/Sward. Paint Testing Manual. Physical and Chemical Examination of Paints, Varnishes, Lacquers, and Colors. 13th Edition. ASTM, 1972. [R13681394] Euverard, M. R., The Efflux Type Viscosity Cup. National Paint, Varnish, and Lacquer Association, 1948. [R13691394] (1, 2) API Technical Data Book: General Properties & Characterization. American Petroleum Institute, 7E, 2005. [R13701394] ASTM. Standard Practice for Conversion of Kinematic Viscosity to Saybolt Universal Viscosity or to Saybolt Furol Viscosity. D 2161  93. Examples
>>> viscosity_converter(8.79, 'engler', 'parlin cup #7') 52.5 >>> viscosity_converter(700, 'Saybolt Universal Seconds', 'kinematic viscosity') 0.00015108914751515542

class
thermo.viscosity.
ViscosityLiquidMixture
(CASs=[], ViscosityLiquids=[])[source]¶ Bases:
thermo.utils.MixtureProperty
Class for dealing with the viscosity of a liquid mixture as a function of temperature, pressure, and composition. Consists of one electrolytespecific method, and logarithmic rules based on either mole fractions of mass fractions.
Prefered method is
mixing_logarithmic
with mole fractions, or Laliberte if the mixture is aqueous and has electrolytes.Parameters: CASs : list[str], optional
The CAS numbers of all species in the mixture
ViscosityLiquids : list[ViscosityLiquid], optional
ViscosityLiquid objects created for all species in the mixture, normally created by
thermo.chemical.Chemical
.Notes
To iterate over all methods, use the list stored in
viscosity_liquid_mixture_methods
. LALIBERTE_MU:
 Electrolyte model equation with coefficients; see
thermo.electrochem.Laliberte_viscosity
for more details.  MIXING_LOG_MOLAR:
 Logarithmic mole fraction mixing rule described in
thermo.utils.mixing_logarithmic
.  MIXING_LOG_MASS:
 Logarithmic mole fraction mixing rule described in
thermo.utils.mixing_logarithmic
.
References
[R13711399] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGrawHill Professional, 2000. Attributes
method prop_cached Methods
__call__
(T, P, zs, ws)Convenience method to calculate the property; calls mixture_property
.calculate
(T, P, zs, ws, method)Method to calculate viscosity of a liquid mixture at temperature T, pressure P, mole fractions zs and weight fractions ws with a given method. calculate_derivative_P
(P, T, zs, ws, method)Method to calculate a derivative of a mixture property with respect to pressure at constant temperature and composition of a given order using a specified method. calculate_derivative_T
(T, P, zs, ws, method)Method to calculate a derivative of a mixture property with respect to temperature at constant pressure and composition of a given order using a specified method. load_all_methods
()Method to initialize the object by precomputing any values which may be used repeatedly and by retrieving mixturespecific variables. mixture_property
(T, P, zs, ws)Method to calculate the property with sanity checking and without specifying a specific method. plot_isobar
(P, zs, ws[, Tmin, Tmax, ...])Method to create a plot of the property vs temperature at a specific pressure and composition according to either a specified list of methods, or user methods (if set), or all methods. plot_isotherm
(T, zs, ws[, Pmin, Pmax, ...])Method to create a plot of the property vs pressure at a specified temperature and composition according to either a specified list of methods, or the user methods (if set), or all methods. plot_property
(zs, ws[, Tmin, Tmax, Pmin, ...])Method to create a plot of the property vs temperature and pressure according to either a specified list of methods, or user methods (if set), or all methods. property_derivative_P
(T, P, zs, ws[, order])Method to calculate a derivative of a mixture property with respect to pressure at constant temperature and composition, of a given order. property_derivative_T
(T, P, zs, ws[, order])Method to calculate a derivative of a mixture property with respect to temperature at constant pressure and composition, of a given order. select_valid_methods
(T, P, zs, ws)Method to obtain a sorted list of methods which are valid at T, P, zs, ws, and possibly Vfls, according to test_method_validity. set_user_method
(user_methods[, forced])Method to set the T, P, and composition dependent property methods desired for consideration by the user. test_method_validity
(T, P, zs, ws, method)Method to test the validity of a specified method for the given conditions. test_property_validity
(prop)Method to test the validity of a calculated property. 
Tmax
= None¶ Maximum temperature at which no method can calculate the liquid viscosity above.

Tmin
= None¶ Minimum temperature at which no method can calculate the liquid viscosity under.

all_methods
= None¶ Set of all methods available for a given set of information; filled by
load_all_methods
.

calculate
(T, P, zs, ws, method)[source]¶ Method to calculate viscosity of a liquid mixture at temperature T, pressure P, mole fractions zs and weight fractions ws with a given method.
This method has no exception handling; see mixture_property for that.
Parameters: T : float
Temperature at which to calculate the property, [K]
P : float
Pressure at which to calculate the property, [Pa]
zs : list[float]
Mole fractions of all species in the mixture, []
ws : list[float]
Weight fractions of all species in the mixture, []
method : str
Name of the method to use
Returns: mu : float
Viscosity of the liquid mixture, [Pa*s]

load_all_methods
()[source]¶ Method to initialize the object by precomputing any values which may be used repeatedly and by retrieving mixturespecific variables. All data are stored as attributes. This method also sets
Tmin
,Tmax
, andall_methods
as a set of methods which should work to calculate the property.Called on initialization only. See the source code for the variables at which the coefficients are stored. The coefficients can safely be altered once the class is initialized. This method can be called again to reset the parameters.

name
= 'liquid viscosity'¶

property_max
= 200000000.0¶ Maximum valid value of liquid viscosity. Generous limit, as the value is that of bitumen in a Pitch drop experiment.

property_min
= 0¶ Mimimum valid value of liquid viscosity.

ranked_methods
= ['Laliberte', 'Logarithmic mixing, molar', 'Logarithmic mixing, mass']¶

sorted_valid_methods
= None¶ sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by mixture_property.

test_method_validity
(T, P, zs, ws, method)[source]¶ Method to test the validity of a specified method for the given conditions. If Laliberte is applicable, all other methods are returned as inapplicable. Otherwise, there are no checks or strict ranges of validity.
Parameters: T : float
Temperature at which to check method validity, [K]
P : float
Pressure at which to check method validity, [Pa]
zs : list[float]
Mole fractions of all species in the mixture, []
ws : list[float]
Weight fractions of all species in the mixture, []
method : str
Method name to use
Returns: validity : bool
Whether or not a specifid method is valid

units
= 'Pa*s'¶

user_methods
= None¶ user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set by mixture_property.

class
thermo.viscosity.
ViscosityGasMixture
(MWs=[], molecular_diameters=[], Stockmayers=[], CASs=[], ViscosityGases=[])[source]¶ Bases:
thermo.utils.MixtureProperty
Class for dealing with the viscosity of a gas mixture as a function of temperature, pressure, and composition. Consists of three gas viscosity specific mixing rules and a moleweighted simple mixing rule.
Prefered method is
Brokaw
.Parameters: MWs : list[float], optional
Molecular weights of all species in the mixture, [g/mol]
molecular_diameters : list[float], optional
LennardJones molecular diameters, [Angstrom]
Stockmayers : list[float], optional
LennardJones depth of potentialenergy minimum over k or epsilon_k, [K]
CASs : list[str], optional
The CAS numbers of all species in the mixture
ViscosityGass : list[ViscosityGas], optional
ViscosityGas objects created for all species in the mixture, normally created by
thermo.chemical.Chemical
.See also
Notes
To iterate over all methods, use the list stored in
viscosity_liquid_mixture_methods
. Brokaw:
 Mixing rule described in
Brokaw
.  HerningZipperer:
 Mixing rule described in
Herning_Zipperer
.  Wilke:
 Mixing rule described in
Wilke
.  SIMPLE:
 Mixing rule described in
thermo.utils.mixing_simple
.
References
[R13721400] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGrawHill Professional, 2000. Attributes
method prop_cached Methods
__call__
(T, P, zs, ws)Convenience method to calculate the property; calls mixture_property
.calculate
(T, P, zs, ws, method)Method to calculate viscosity of a gas mixture at temperature T, pressure P, mole fractions zs and weight fractions ws with a given method. calculate_derivative_P
(P, T, zs, ws, method)Method to calculate a derivative of a mixture property with respect to pressure at constant temperature and composition of a given order using a specified method. calculate_derivative_T
(T, P, zs, ws, method)Method to calculate a derivative of a mixture property with respect to temperature at constant pressure and composition of a given order using a specified method. load_all_methods
()Method to initialize the object by precomputing any values which may be used repeatedly and by retrieving mixturespecific variables. mixture_property
(T, P, zs, ws)Method to calculate the property with sanity checking and without specifying a specific method. plot_isobar
(P, zs, ws[, Tmin, Tmax, ...])Method to create a plot of the property vs temperature at a specific pressure and composition according to either a specified list of methods, or user methods (if set), or all methods. plot_isotherm
(T, zs, ws[, Pmin, Pmax, ...])Method to create a plot of the property vs pressure at a specified temperature and composition according to either a specified list of methods, or the user methods (if set), or all methods. plot_property
(zs, ws[, Tmin, Tmax, Pmin, ...])Method to create a plot of the property vs temperature and pressure according to either a specified list of methods, or user methods (if set), or all methods. property_derivative_P
(T, P, zs, ws[, order])Method to calculate a derivative of a mixture property with respect to pressure at constant temperature and composition, of a given order. property_derivative_T
(T, P, zs, ws[, order])Method to calculate a derivative of a mixture property with respect to temperature at constant pressure and composition, of a given order. select_valid_methods
(T, P, zs, ws)Method to obtain a sorted list of methods which are valid at T, P, zs, ws, and possibly Vfls, according to test_method_validity. set_user_method
(user_methods[, forced])Method to set the T, P, and composition dependent property methods desired for consideration by the user. test_method_validity
(T, P, zs, ws, method)Method to test the validity of a specified method for the given conditions. test_property_validity
(prop)Method to test the validity of a calculated property. 
Tmax
= None¶ Maximum temperature at which no method can calculate the gas viscosity above.

Tmin
= None¶ Minimum temperature at which no method can calculate the gas viscosity under.

all_methods
= None¶ Set of all methods available for a given set of information; filled by
load_all_methods
.

calculate
(T, P, zs, ws, method)[source]¶ Method to calculate viscosity of a gas mixture at temperature T, pressure P, mole fractions zs and weight fractions ws with a given method.
This method has no exception handling; see mixture_property for that.
Parameters: T : float
Temperature at which to calculate the property, [K]
P : float
Pressure at which to calculate the property, [Pa]
zs : list[float]
Mole fractions of all species in the mixture, []
ws : list[float]
Weight fractions of all species in the mixture, []
method : str
Name of the method to use
Returns: mu : float
Viscosity of gas mixture, [Pa*s]

load_all_methods
()[source]¶ Method to initialize the object by precomputing any values which may be used repeatedly and by retrieving mixturespecific variables. All data are stored as attributes. This method also sets
Tmin
,Tmax
, andall_methods
as a set of methods which should work to calculate the property.Called on initialization only. See the source code for the variables at which the coefficients are stored. The coefficients can safely be altered once the class is initialized. This method can be called again to reset the parameters.

name
= 'gas viscosity'¶

property_max
= 0.001¶ Maximum valid value of gas viscosity. Might be too high, or too low.

property_min
= 0¶ Mimimum valid value of gas viscosity; limiting condition at low pressure is 0.

ranked_methods
= ['Brokaw', 'HerningZipperer', 'Simple', 'Wilke']¶

sorted_valid_methods
= None¶ sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by mixture_property.

test_method_validity
(T, P, zs, ws, method)[source]¶ Method to test the validity of a specified method for the given conditions. No methods have implemented checks or strict ranges of validity.
Parameters: T : float
Temperature at which to check method validity, [K]
P : float
Pressure at which to check method validity, [Pa]
zs : list[float]
Mole fractions of all species in the mixture, []
ws : list[float]
Weight fractions of all species in the mixture, []
method : str
Method name to use
Returns: validity : bool
Whether or not a specifid method is valid

units
= 'Pa*s'¶

user_methods
= None¶ user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set by mixture_property.