thermo.interface module

thermo.interface.REFPROP(T, Tc, sigma0, n0, sigma1=0, n1=0, sigma2=0, n2=0)[source]

Calculates air-liquid surface tension using the REFPROP [R894918] regression-based method. Relatively recent, and most accurate.

\[\sigma(T)=\sigma_0\left(1-\frac{T}{T_c}\right)^{n_0}+ \sigma_1\left(1-\frac{T}{T_c}\right)^{n_1}+ \sigma_2\left(1-\frac{T}{T_c}\right)^{n_2}\]
Parameters:

T : float

Temperature of fluid [K]

Tc : float

Critical temperature of fluid [K]

sigma0 : float

First emperical coefficient of a fluid

n0 : float

First emperical exponent of a fluid

sigma1 : float, optional

Second emperical coefficient of a fluid.

n1 : float, optional

Second emperical exponent of a fluid.

sigma1 : float, optional

Third emperical coefficient of a fluid.

n2 : float, optional

Third emperical exponent of a fluid.

Returns:

sigma : float

Liquid surface tension, N/m

Notes

Function as implemented in [R894918]. No example necessary; results match literature values perfectly. Form of function returns imaginary results when T > Tc; None is returned if this is the case.

References

[R894918](1, 2, 3) Diky, Vladimir, Robert D. Chirico, Chris D. Muzny, Andrei F. Kazakov, Kenneth Kroenlein, Joseph W. Magee, Ilmutdin Abdulagatov, and Michael Frenkel. “ThermoData Engine (TDE): Software Implementation of the Dynamic Data Evaluation Concept.” Journal of Chemical Information and Modeling 53, no. 12 (2013): 3418-30. doi:10.1021/ci4005699.

Examples

Parameters for water at 298.15 K

>>> REFPROP(298.15, 647.096, -0.1306, 2.471, 0.2151, 1.233)
0.07205503890847453
thermo.interface.Somayajulu(T, Tc, A, B, C)[source]

Calculates air-water surface tension using the [R895919] emperical (parameter-regressed) method. Well regressed, no recent data.

\[\sigma=aX^{5/4}+bX^{9/4}+cX^{13/4} X=(T_c-T)/T_c\]
Parameters:

T : float

Temperature of fluid [K]

Tc : float

Critical temperature of fluid [K]

A : float

Regression parameter

B : float

Regression parameter

C : float

Regression parameter

Returns:

sigma : float

Liquid surface tension, N/m

Notes

Presently untested, but matches expected values. Internal units are mN/m. Form of function returns imaginary results when T > Tc; None is returned if this is the case. Function is claimed valid from the triple to the critical point. Results can be evaluated beneath the triple point.

References

[R895919](1, 2) Somayajulu, G. R. “A Generalized Equation for Surface Tension from the Triple Point to the Critical Point.” International Journal of Thermophysics 9, no. 4 (July 1988): 559-66. doi:10.1007/BF00503154.

Examples

Water at 300 K

>>> Somayajulu(300, 647.126, 232.713514, -140.18645, -4.890098)
0.07166386387996757
thermo.interface.Jasper(T, a, b)[source]

Calculates surface tension of a fluid given two parameters, a linear fit in Celcius from [R896920] with data reprinted in [R897920].

\[\sigma = a - bT\]
Parameters:

T : float

Temperature of fluid, [K]

a : float

Parameter for equation. Chemical specific.

b : float

Parameter for equation. Chemical specific.

Returns:

sigma: float

Surface tension [N/m]

Notes

Internal units are mN/m, and degrees Celcius. This function has been checked against several references.

References

[R896920](1, 2) Jasper, Joseph J. “The Surface Tension of Pure Liquid Compounds.” Journal of Physical and Chemical Reference Data 1, no. 4 (October 1, 1972): 841-1010. doi:10.1063/1.3253106.
[R897920](1, 2) Speight, James. Lange’s Handbook of Chemistry. 16 edition. McGraw-Hill Professional, 2005.

Examples

>>> Jasper(298.15, 24, 0.0773)
0.0220675
thermo.interface.Brock_Bird(T, Tb, Tc, Pc)[source]

Calculates air-water surface tension using the [R898922] emperical method. Old and tested.

\[ \begin{align}\begin{aligned}\sigma = P_c^{2/3}T_c^{1/3}Q(1-T_r)^{11/9}\\Q = 0.1196 \left[ 1 + \frac{T_{br}\ln (P_c/1.01325)}{1-T_{br}}\right]-0.279\end{aligned}\end{align} \]
Parameters:

T : float

Temperature of fluid [K]

Tb : float

Boiling temperature of the fluid [K]

Tc : float

Critical temperature of fluid [K]

Pc : float

Critical pressure of fluid [Pa]

Returns:

sigma : float

Liquid surface tension, N/m

Notes

Numerous arrangements of this equation are available. This is DIPPR Procedure 7A: Method for the Surface Tension of Pure, Nonpolar, Nonhydrocarbon Liquids The exact equation is not in the original paper. If the equation yields a negative result, return None.

References

[R898922](1, 2) Brock, James R., and R. Byron Bird. “Surface Tension and the Principle of Corresponding States.” AIChE Journal 1, no. 2 (June 1, 1955): 174-77. doi:10.1002/aic.690010208

Examples

p-dichloribenzene at 412.15 K, from DIPPR; value differs due to a slight difference in method.

>>> Brock_Bird(412.15, 447.3, 685, 3.952E6)
0.02208448325192495

Chlorobenzene from Poling, as compared with a % error value at 293 K.

>>> Brock_Bird(293.15, 404.75, 633.0, 4530000.0)
0.032985686413713036
thermo.interface.Pitzer(T, Tc, Pc, omega)[source]

Calculates air-water surface tension using the correlation derived by [R899923] from the works of [R900923] and [R901923]. Based on critical property CSP methods.

\[\sigma = P_c^{2/3}T_c^{1/3}\frac{1.86 + 1.18\omega}{19.05} \left[ \frac{3.75 + 0.91 \omega}{0.291 - 0.08 \omega}\right]^{2/3} (1-T_r)^{11/9}\]
Parameters:

T : float

Temperature of fluid [K]

Tc : float

Critical temperature of fluid [K]

Pc : float

Critical pressure of fluid [Pa]

omega : float

Acentric factor for fluid, [-]

Returns:

sigma : float

Liquid surface tension, N/m

Notes

The source of this equation has not been reviewed. Internal units of presure are bar, surface tension of mN/m.

References

[R899923](1, 2) Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[R900923](1, 2) Curl, R. F., and Kenneth Pitzer. “Volumetric and Thermodynamic Properties of Fluids-Enthalpy, Free Energy, and Entropy.” Industrial & Engineering Chemistry 50, no. 2 (February 1, 1958): 265-74. doi:10.1021/ie50578a047
[R901923](1, 2) Pitzer, K. S.: Thermodynamics, 3d ed., New York, McGraw-Hill, 1995, p. 521.

Examples

Chlorobenzene from Poling, as compared with a % error value at 293 K.

>>> Pitzer(293., 633.0, 4530000.0, 0.249)
0.03458453513446387
thermo.interface.Sastri_Rao(T, Tb, Tc, Pc, chemicaltype=None)[source]

Calculates air-water surface tension using the correlation derived by [R903927] based on critical property CSP methods and chemical classes.

\[\sigma = K P_c^xT_b^y T_c^z\left[\frac{1-T_r}{1-T_{br}}\right]^m\]
Parameters:

T : float

Temperature of fluid [K]

Tb : float

Boiling temperature of the fluid [K]

Tc : float

Critical temperature of fluid [K]

Pc : float

Critical pressure of fluid [Pa]

Returns:

sigma : float

Liquid surface tension, N/m

Notes

The source of this equation has not been reviewed. Internal units of presure are bar, surface tension of mN/m.

References

[R903927](1, 2) Sastri, S. R. S., and K. K. Rao. “A Simple Method to Predict Surface Tension of Organic Liquids.” The Chemical Engineering Journal and the Biochemical Engineering Journal 59, no. 2 (October 1995): 181-86. doi:10.1016/0923-0467(94)02946-6.

Examples

Chlorobenzene from Poling, as compared with a % error value at 293 K.

>>> Sastri_Rao(293.15, 404.75, 633.0, 4530000.0)
0.03234567739694441
thermo.interface.Zuo_Stenby(T, Tc, Pc, omega)[source]

Calculates air-water surface tension using the reference fluids methods of [R904928].

\[\sigma^{(1)} = 40.520(1-T_r)^{1.287} \sigma^{(2)} = 52.095(1-T_r)^{1.21548} \sigma_r = \sigma_r^{(1)}+ \frac{\omega - \omega^{(1)}} {\omega^{(2)}-\omega^{(1)}} (\sigma_r^{(2)}-\sigma_r^{(1)}) \sigma = T_c^{1/3}P_c^{2/3}[\exp{(\sigma_r)} -1]\]
Parameters:

T : float

Temperature of fluid [K]

Tc : float

Critical temperature of fluid [K]

Pc : float

Critical pressure of fluid [Pa]

omega : float

Acentric factor for fluid, [-]

Returns:

sigma : float

Liquid surface tension, N/m

Notes

Presently untested. Have not personally checked the sources. I strongly believe it is broken. The reference values for methane and n-octane are from the DIPPR database.

References

[R904928](1, 2) Zuo, You-Xiang, and Erling H. Stenby. “Corresponding-States and Parachor Models for the Calculation of Interfacial Tensions.” The Canadian Journal of Chemical Engineering 75, no. 6 (December 1, 1997): 1130-37. doi:10.1002/cjce.5450750617

Examples

Chlorobenzene

>>> Zuo_Stenby(293., 633.0, 4530000.0, 0.249)
0.03345569011871088
thermo.interface.Hakim_Steinberg_Stiel(T, Tc, Pc, omega, StielPolar=0)[source]

Calculates air-water surface tension using the reference fluids methods of [R905929].

\[ \begin{align}\begin{aligned}\sigma = 4.60104\times 10^{-7} P_c^{2/3}T_c^{1/3}Q_p \left(\frac{1-T_r}{0.4}\right)^m\\Q_p = 0.1574+0.359\omega-1.769\chi-13.69\chi^2-0.51\omega^2+1.298\omega\chi\\m = 1.21+0.5385\omega-14.61\chi-32.07\chi^2-1.65\omega^2+22.03\omega\chi\end{aligned}\end{align} \]
Parameters:

T : float

Temperature of fluid [K]

Tc : float

Critical temperature of fluid [K]

Pc : float

Critical pressure of fluid [Pa]

omega : float

Acentric factor for fluid, [-]

StielPolar : float, optional

Stiel Polar Factor, [-]

Returns:

sigma : float

Liquid surface tension, N/m

Notes

Original equation for m and Q are used. Internal units are atm and mN/m.

References

[R905929](1, 2) Hakim, D. I., David Steinberg, and L. I. Stiel. “Generalized Relationship for the Surface Tension of Polar Fluids.” Industrial & Engineering Chemistry Fundamentals 10, no. 1 (February 1, 1971): 174-75. doi:10.1021/i160037a032.

Examples

1-butanol, as compared to value in CRC Handbook of 0.02493.

>>> Hakim_Steinberg_Stiel(298.15, 563.0, 4414000.0, 0.59, StielPolar=-0.07872)
0.021907902575190447
thermo.interface.Miqueu(T, Tc, Vc, omega)[source]

Calculates air-water surface tension using the methods of [R907931].

\[\sigma = k T_c \left( \frac{N_a}{V_c}\right)^{2/3} (4.35 + 4.14 \omega)t^{1.26}(1+0.19t^{0.5} - 0.487t)\]
Parameters:

T : float

Temperature of fluid [K]

Tc : float

Critical temperature of fluid [K]

Vc : float

Critical volume of fluid [m^3/mol]

omega : float

Acentric factor for fluid, [-]

Returns:

sigma : float

Liquid surface tension, N/m

Notes

Uses Avogadro’s constant and the Boltsman constant. Internal units of volume are mL/mol and mN/m. However, either a typo is in the article or author’s work, or my value of k is off by 10; this is corrected nonetheless. Created with 31 normal fluids, none polar or hydrogen bonded. Has an AARD of 3.5%.

References

[R907931](1, 2) Miqueu, C, D Broseta, J Satherley, B Mendiboure, J Lachaise, and A Graciaa. “An Extended Scaled Equation for the Temperature Dependence of the Surface Tension of Pure Compounds Inferred from an Analysis of Experimental Data.” Fluid Phase Equilibria 172, no. 2 (July 5, 2000): 169-82. doi:10.1016/S0378-3812(00)00384-8.

Examples

Bromotrifluoromethane, 2.45 mN/m

>>> Miqueu(300., 340.1, 0.000199, 0.1687)
0.003474099603581931
thermo.interface.Aleem(T, MW, Tb, rhol, Hvap_Tb, Cpl)[source]

Calculates vapor-liquid surface tension using the correlation derived by [R908932] based on critical property CSP methods.

\[ \begin{align}\begin{aligned}\sigma = \phi \frac{MW^{1/3}} {6N_A^{1/3}}\rho_l^{2/3}\left[H_{vap} + C_{p,l}(T_b-T)\right]\\\phi = 1 - 0.0047MW + 6.8\times 10^{-6} MW^2\end{aligned}\end{align} \]
Parameters:

T : float

Temperature of fluid [K]

MW : float

Molecular weight [g/mol]

Tb : float

Boiling temperature of the fluid [K]

rhol : float

Liquid density at T and P [kg/m^3]

Hvap_Tb : float

Mass enthalpy of vaporization at the normal boiling point [kg/m^3]

Cpl : float

Liquid heat capacity of the chemical at T [J/kg/K]

Returns:

sigma : float

Liquid-vapor surface tension [N/m]

Notes

Internal units of molecuar weight are kg/mol. This model is dimensionally consistent.

This model does not use the critical temperature. After it predicts a surface tension of 0 at a sufficiently high temperature, it returns negative results. The temperature at which this occurs (the “predicted” critical temperature) can be calculated as follows:

\[\sigma = 0 \to T_{c,predicted} \text{ at } T_b + \frac{H_{vap}}{Cp_l}\]

Because of its dependence on density, it has the potential to model the effect of pressure on surface tension.

Claims AAD of 4.3%. Developed for normal alkanes. Total of 472 data points. Behaves worse for higher alkanes. Behaves very poorly overall.

References

[R908932](1, 2) Aleem, W., N. Mellon, S. Sufian, M. I. A. Mutalib, and D. Subbarao. “A Model for the Estimation of Surface Tension of Pure Hydrocarbon Liquids.” Petroleum Science and Technology 33, no. 23-24 (December 17, 2015): 1908-15. doi:10.1080/10916466.2015.1110593.

Examples

Methane at 90 K

>>> Aleem(T=90, MW=16.04246, Tb=111.6, rhol=458.7, Hvap_Tb=510870.,
... Cpl=2465.)
0.01669970221165325
thermo.interface.surface_tension_methods = ['REFPROP', 'SOMAYAJULU2', 'SOMAYAJULU', 'VDI_PPDS', 'VDI_TABULAR', 'JASPER', 'MIQUEU', 'BROCK_BIRD', 'SASTRI_RAO', 'PITZER', 'ZUO_STENBY', 'Aleem']

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

class thermo.interface.SurfaceTension(MW=None, Tb=None, Tc=None, Pc=None, Vc=None, Zc=None, omega=None, StielPolar=None, Hvap_Tb=None, CASRN='', Vml=None, Cpl=None)[source]

Bases: thermo.utils.TDependentProperty

Class for dealing with surface tension as a function of temperature. Consists of three coefficient-based methods and four data sources, one source of tabular information, and five corresponding-states estimators.

Parameters:

Tb : float, optional

Boiling point, [K]

MW : float, optional

Molecular weight, [g/mol]

Tc : float, optional

Critical temperature, [K]

Pc : float, optional

Critical pressure, [Pa]

Vc : float, optional

Critical volume, [m^3/mol]

Zc : float, optional

Critical compressibility

omega : float, optional

Acentric factor, [-]

StielPolar : float, optional

Stiel polar factor

Hvap_Tb : float

Mass enthalpy of vaporization at the normal boiling point [kg/m^3]

CASRN : str, optional

The CAS number of the chemical

Vml : float or callable, optional

Liquid molar volume at a given temperature and pressure or callable for the same, [m^3/mol]

Cpl : float or callable, optional

Mass heat capacity of the fluid at a pressure and temperature or or callable for the same, [J/kg/K]

Notes

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

STREFPROP:
The REFPROP coefficient-based method, documented in the function REFPROP for 115 fluids from [R913933].
SOMAYAJULU and SOMAYAJULU2:
The Somayajulu coefficient-based method, documented in the function Somayajulu. Both methods have data for 64 fluids. The first data set if from [R909933], and the second from [R910933]. The later, revised coefficients should be used prefered.
JASPER:
Fit with a single temperature coefficient from Jaspen (1972) as documented in the function Jasper. Data for 522 fluids is available, as shown in [R912933] but originally in [R911933].
BROCK_BIRD:
CSP method documented in Brock_Bird. Most popular estimation method; from 1955.
SASTRI_RAO:
CSP method documented in Sastri_Rao. Second most popular estimation method; from 1995.
PITZER:
CSP method documented in Pitzer; from 1958.
ZUO_STENBY:
CSP method documented in Zuo_Stenby; from 1997.
MIQUEU:
CSP method documented in Miqueu.
ALEEM:
CSP method documented in Aleem.
VDI_TABULAR:
Tabular data in [R914933] along the saturation curve; interpolation is as set by the user or the default.

References

[R909933](1, 2) Somayajulu, G. R. “A Generalized Equation for Surface Tension from the Triple Point to the Critical Point.” International Journal of Thermophysics 9, no. 4 (July 1988): 559-66. doi:10.1007/BF00503154.
[R910933](1, 2) Mulero, A., M. I. Parra, and I. Cachadina. “The Somayajulu Correlation for the Surface Tension Revisited.” Fluid Phase Equilibria 339 (February 15, 2013): 81-88. doi:10.1016/j.fluid.2012.11.038.
[R911933](1, 2) Jasper, Joseph J. “The Surface Tension of Pure Liquid Compounds.” Journal of Physical and Chemical Reference Data 1, no. 4 (October 1, 1972): 841-1010. doi:10.1063/1.3253106.
[R912933](1, 2) Speight, James. Lange’s Handbook of Chemistry. 16 edition. McGraw-Hill Professional, 2005.
[R913933](1, 2) Mulero, A., I. Cachadiña, and M. I. Parra. “Recommended Correlations for the Surface Tension of Common Fluids.” Journal of Physical and Chemical Reference Data 41, no. 4 (December 1, 2012): 043105. doi:10.1063/1.4768782.
[R914933](1, 2) Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010.

Attributes

T_cached  
interpolation_T  
interpolation_property  
interpolation_property_inv  
method  

Methods

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) Convenience method to calculate the property; calls T_dependent_property.
calculate(T, method) Method to calculate surface tension of a liquid at temperature T 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_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.
load_all_methods() Method which picks out coefficients for the specified chemical from the various dictionaries and DataFrames storing it.
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.
select_valid_methods(T) Method to obtain a sorted list of 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_user_methods(user_methods[, forced]) Method used to select certain property methods as having a higher priority than were set by default.
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_property_validity(prop) Method to test the validity of a calculated property.
Tmax = None

Maximum temperature at which no method can calculate the surface tension above.

Tmin = None

Minimum temperature at which no method can calculate the surface tension under.

all_methods = None

Set of all methods available for a given CASRN and properties; filled by load_all_methods.

calculate(T, method)[source]

Method to calculate surface tension of a liquid at temperature 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 surface tension, [K]

method : str

Name of the method to use

Returns:

sigma : float

Surface tension of the liquid at T, [N/m]

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, and all_methods 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 = 'Surface tension'
property_max = 4.0

Maximum valid value of surface tension. Set to roughly twice that of cobalt at its melting point.

property_min = 0

Mimimum valid value of surface tension. This occurs at the critical point exactly.

ranked_methods = ['REFPROP', 'SOMAYAJULU2', 'SOMAYAJULU', 'VDI_PPDS', 'VDI_TABULAR', 'JASPER', 'MIQUEU', 'BROCK_BIRD', 'SASTRI_RAO', 'PITZER', 'ZUO_STENBY', 'Aleem']

Default rankings of the available methods.

sorted_valid_methods = None

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

tabular_data = None

tabular_data, dict: Stored (Ts, 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_extrapolation_permitted = True

Allow tabular extrapolation by default; values below 0 will be obtained at high temperatures.

test_method_validity(T, method)[source]

Method to check the validity of a method. Follows the given ranges for all coefficient-based 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

units = 'N/m'
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.

thermo.interface.Winterfeld_Scriven_Davis(xs, sigmas, rhoms)[source]

Calculates surface tension of a liquid mixture according to mixing rules in [R915939] and also in [R916939].

\[\sigma_M = \sum_i \sum_j \frac{1}{V_L^{L2}}\left(x_i V_i \right) \left( x_jV_j\right)\sqrt{\sigma_i\cdot \sigma_j}\]
Parameters:

xs : array-like

Mole fractions of all components, [-]

sigmas : array-like

Surface tensions of all components, [N/m]

rhoms : array-like

Molar densities of all components, [mol/m^3]

Returns:

sigma : float

Air-liquid surface tension of mixture, [N/m]

Notes

DIPPR Procedure 7C: Method for the Surface Tension of Nonaqueous Liquid Mixtures

Becomes less accurate as liquid-liquid critical solution temperature is approached. DIPPR Evaluation: 3-4% AARD, from 107 nonaqueous binary systems, 1284 points. Internally, densities are converted to kmol/m^3. The Amgat function is used to obtain liquid mixture density in this equation.

Raises a ZeroDivisionError if either molar volume are zero, and a ValueError if a surface tensions of a pure component is negative.

References

[R915939](1, 2) Winterfeld, P. H., L. E. Scriven, and H. T. Davis. “An Approximate Theory of Interfacial Tensions of Multicomponent Systems: Applications to Binary Liquid-Vapor Tensions.” AIChE Journal 24, no. 6 (November 1, 1978): 1010-14. doi:10.1002/aic.690240610.
[R916939](1, 2) Danner, Ronald P, and Design Institute for Physical Property Data. Manual for Predicting Chemical Process Design Data. New York, N.Y, 1982.

Examples

>>> Winterfeld_Scriven_Davis([0.1606, 0.8394], [0.01547, 0.02877],
... [8610., 15530.])
0.024967388450439824
thermo.interface.Diguilio_Teja(T, xs, sigmas_Tb, Tbs, Tcs)[source]

Calculates surface tension of a liquid mixture according to mixing rules in [R917941].

\[ \begin{align}\begin{aligned}\sigma = 1.002855(T^*)^{1.118091} \frac{T}{T_b} \sigma_r\\T^* = \frac{(T_c/T)-1}{(T_c/T_b)-1}\\\sigma_r = \sum x_i \sigma_i\\T_b = \sum x_i T_{b,i}\\T_c = \sum x_i T_{c,i}\end{aligned}\end{align} \]
Parameters:

T : float

Temperature of fluid [K]

xs : array-like

Mole fractions of all components

sigmas_Tb : array-like

Surface tensions of all components at the boiling point, [N/m]

Tbs : array-like

Boiling temperatures of all components, [K]

Tcs : array-like

Critical temperatures of all components, [K]

Returns:

sigma : float

Air-liquid surface tension of mixture, [N/m]

Notes

Simple model, however it has 0 citations. Gives similar results to the Winterfeld_Scriven_Davis model.

Raises a ValueError if temperature is greater than the mixture’s critical temperature or if the given temperature is negative, or if the mixture’s boiling temperature is higher than its critical temperature.

[R917941] claims a 4.63 percent average absolute error on 21 binary and 4 ternary non-aqueous systems. [R917941] also considered Van der Waals mixing rules for Tc, but found it provided a higher error of 5.58%

References

[R917941](1, 2, 3, 4) Diguilio, Ralph, and Amyn S. Teja. “Correlation and Prediction of the Surface Tensions of Mixtures.” The Chemical Engineering Journal 38, no. 3 (July 1988): 205-8. doi:10.1016/0300-9467(88)80079-0.

Examples

>>> Diguilio_Teja(T=298.15, xs=[0.1606, 0.8394],
... sigmas_Tb=[0.01424, 0.02530], Tbs=[309.21, 312.95], Tcs=[469.7, 508.0])
0.025716823875045505
class thermo.interface.SurfaceTensionMixture(MWs=[], Tbs=[], Tcs=[], CASs=[], SurfaceTensions=[], VolumeLiquids=[])[source]

Bases: thermo.utils.MixtureProperty

Class for dealing with surface tension of a mixture as a function of temperature, pressure, and composition. Consists of two mixing rules specific to surface tension, and mole weighted averaging.

Prefered method is Winterfeld_Scriven_Davis which requires mole fractions, pure component surface tensions, and the molar density of each pure component. Diguilio_Teja is of similar accuracy, but requires the surface tensions of pure components at their boiling points, as well as boiling points and critical points and mole fractions. An ideal mixing rule based on mole fractions, SIMPLE, is also available and is still relatively accurate.

Parameters:

MWs : list[float], optional

Molecular weights of all species in the mixture, [g/mol]

Tbs : list[float], optional

Boiling points of all species in the mixture, [K]

Tcs : list[float], optional

Critical temperatures of all species in the mixture, [K]

CASs : list[str], optional

The CAS numbers of all species in the mixture

SurfaceTensions : list[SurfaceTension], optional

SurfaceTension objects created for all species in the mixture, normally created by thermo.chemical.Chemical.

VolumeLiquids : list[VolumeLiquid], optional

VolumeLiquid 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 surface_tension_mixture_methods.

WINTERFELDSCRIVENDAVIS:
Mixing rule described in Winterfeld_Scriven_Davis.
DIGUILIOTEJA:
Mixing rule described in Diguilio_Teja.
SIMPLE:
Mixing rule described in thermo.utils.mixing_simple.

References

[R918942]Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill 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 surface tension 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 mixture-specific 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 surface tension above.

Tmin = None

Minimum temperature at which no method can calculate the surface tension 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 surface tension 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:

sigma : float

Surface tension of the liquid at given conditions, [N/m]

load_all_methods()[source]

Method to initialize the object by precomputing any values which may be used repeatedly and by retrieving mixture-specific variables. All data are stored as attributes. This method also sets Tmin, Tmax, and all_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 = 'Surface tension'
property_max = 4.0

Maximum valid value of surface tension. Set to roughly twice that of cobalt at its melting point.

property_min = 0

Mimimum valid value of surface tension. This occurs at the critical point exactly.

ranked_methods = ['Winterfeld, Scriven, and Davis (1978)', 'Diguilio and Teja (1988)', 'Simple']
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 = 'N/m'
user_methods = None

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