Virial Coefficients (chemicals.virial)

This module contains four estimation methods for second B virial coefficients, two utility covnersions for when only B is considered, and two methods to calculate Z from higher order virial expansions.

For reporting bugs, adding feature requests, or submitting pull requests, please use the GitHub issue tracker.

Utilities

chemicals.virial.B_to_Z(B, T, P)[source]

Calculates the compressibility factor of a gas, given its second virial coefficient.

Z=PVRT=1+BPRTZ = \frac{PV}{RT} = 1 + \frac{BP}{RT}
Parameters
Bfloat

Second virial coefficient, [m^3/mol]

Tfloat

Temperature, [K]

Pfloat

Pressure [Pa]

Returns
Zfloat

Compressibility factor, [-]

Notes

Other forms of the virial coefficient exist.

References

1

Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.

Examples

>>> B_to_Z(-0.0015, 300, 1E5)
0.939863822478637
chemicals.virial.B_from_Z(Z, T, P)[source]

Calculates the second virial coefficient of a pure species, given the compressibility factor of the gas.

B=RT(Z1)PB = \frac{RT(Z-1)}{P}
Parameters
Zfloat

Compressibility factor, [-]

Tfloat

Temperature, [K]

Pfloat

Pressure [Pa]

Returns
Bfloat

Second virial coefficient, [m^3/mol]

Notes

Other forms of the virial coefficient exist.

References

1

Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.

Examples

>>> B_from_Z(0.94, 300, 1E5)
-0.0014966032712675846
chemicals.virial.Z_from_virial_density_form(T, P, *args)[source]

Calculates the compressibility factor of a gas given its temperature, pressure, and molar density-form virial coefficients. Any number of coefficients is supported.

Z=PVRT=1+BV+CV2+DV3+EV4Z = \frac{PV}{RT} = 1 + \frac{B}{V} + \frac{C}{V^2} + \frac{D}{V^3} + \frac{E}{V^4} \dots
Parameters
Tfloat

Temperature, [K]

Pfloat

Pressure, [Pa]

B to Zfloat, optional

Virial coefficients, [various]

Returns
Zfloat

Compressibility factor at T, P, and with given virial coefficients, [-]

Notes

For use with B or with B and C or with B and C and D, optimized equations are used to obtain the compressibility factor directly. If more coefficients are provided, uses numpy’s roots function to solve this equation. This takes substantially longer as the solution is numerical.

If no virial coefficients are given, returns 1, as per the ideal gas law.

The units of each virial coefficient are as follows, where for B, n=1, and C, n=2, and so on.

(m3mol)n\left(\frac{\text{m}^3}{\text{mol}}\right)^n

References

1

Prausnitz, John M., Rudiger N. Lichtenthaler, and Edmundo Gomes de Azevedo. Molecular Thermodynamics of Fluid-Phase Equilibria. 3rd edition. Upper Saddle River, N.J: Prentice Hall, 1998.

2

Walas, Stanley M. Phase Equilibria in Chemical Engineering. Butterworth-Heinemann, 1985.

Examples

>>> Z_from_virial_density_form(300, 122057.233762653, 1E-4, 1E-5, 1E-6, 1E-7)
1.28434940526
chemicals.virial.Z_from_virial_pressure_form(P, *args)[source]

Calculates the compressibility factor of a gas given its pressure, and pressure-form virial coefficients. Any number of coefficients is supported.

Z=PvRT=1+BP+CP2+DP3+EP4Z = \frac{Pv}{RT} = 1 + B'P + C'P^2 + D'P^3 + E'P^4 \dots
Parameters
Pfloat

Pressure, [Pa]

B to Zfloat, optional

Pressure form Virial coefficients, [various]

Returns
Zfloat

Compressibility factor at P, and with given virial coefficients, [-]

Notes

Note that although this function does not require a temperature input, it is still dependent on it because the coefficients themselves normally are regressed in terms of temperature.

The use of this form is less common than the density form. Its coefficients are normally indicated with the “’” suffix.

If no virial coefficients are given, returns 1, as per the ideal gas law.

The units of each virial coefficient are as follows, where for B, n=1, and C, n=2, and so on.

(1Pa)n\left(\frac{1}{\text{Pa}}\right)^n

References

1

Prausnitz, John M., Rudiger N. Lichtenthaler, and Edmundo Gomes de Azevedo. Molecular Thermodynamics of Fluid-Phase Equilibria. 3rd edition. Upper Saddle River, N.J: Prentice Hall, 1998.

2

Walas, Stanley M. Phase Equilibria in Chemical Engineering. Butterworth-Heinemann, 1985.

Examples

>>> Z_from_virial_pressure_form(102919.99946855308, 4.032286555169439e-09, 1.6197059494442215e-13, 6.483855042486911e-19)
1.00283753944
chemicals.virial.BVirial_mixture(zs, Bijs)[source]

Calculate the B second virial coefficient from a matrix of virial cross-coefficients. The diagonal is virial coefficients of the pure components.

B=ijyiyjB(T)B = \sum_i \sum_j y_i y_j B(T)
Parameters
zslist[float]

Mole fractions of each species, [-]

Bijslist[list[float]]

Second virial coefficient in density form [m^3/mol]

Returns
Bfloat

Second virial coefficient in density form [m^3/mol]

References

1

Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.

Examples

>>> Bijs = [[-6.24e-06, -2.013e-05, -3.9e-05], [-2.01e-05, -4.391e-05, -6.46e-05], [-3.99e-05, -6.46e-05, -0.00012]]
>>> zs = [.5, .3, .2]
>>> BVirial_mixture(zs=zs, Bijs=Bijs)
-3.19884e-05
chemicals.virial.dBVirial_mixture_dzs(zs, Bijs, dB_dzs=None)[source]

Calculate first mole fraction derivative of the B second virial coefficient from a matrix of virial cross-coefficients.

Bxi=jzj(Bi,j+Bj,i)\frac{\partial B}{\partial x_i} = \sum_j z_j(B_{i,j} + B_{j,i})
Parameters
zslist[float]

Mole fractions of each species, [-]

Bijslist[list[float]]

Second virial coefficient in density form [m^3/mol]

dB_dzslist[float], optional

Array for first mole fraction derivatives of second virial coefficient in density form [m^3/mol]

Returns
dB_dzslist[float]

First mole fraction derivatives of second virial coefficient in density form [m^3/mol]

Examples

>>> Bijs = [[-6.24e-06, -2.013e-05, -3.9e-05], [-2.01e-05, -4.391e-05, -6.46e-05], [-3.99e-05, -6.46e-05, -0.00012]]
>>> zs = [.5, .3, .2]
>>> dBVirial_mixture_dzs(zs=zs, Bijs=Bijs)
[-3.4089e-05, -7.2301e-05, -0.00012621]
chemicals.virial.d2BVirial_mixture_dzizjs(zs, Bijs, d2B_dzizjs=None)[source]

Calculate second mole fraction derivative of the B second virial coefficient from a matrix of virial cross-coefficients.

2Bxixj=Bi,j+Bj,i\frac{\partial^2 B}{\partial x_i \partial x_j} = B_{i,j} + B_{j,i}
Parameters
zslist[float]

Mole fractions of each species, [-]

Bijslist[list[float]]

Second virial coefficient in density form [m^3/mol]

d2B_dzizjslist[list[float]], optional

Array for First mole fraction derivatives of second virial coefficient in density form [m^3/mol]

Returns
d2B_dzizjslist[list[float]]

First mole fraction derivatives of second virial coefficient in density form [m^3/mol]

Examples

>>> Bijs = [[-6.24e-06, -2.013e-05, -3.9e-05], [-2.01e-05, -4.391e-05, -6.46e-05], [-3.99e-05, -6.46e-05, -0.00012]]
>>> zs = [.5, .3, .2]
>>> d2BVirial_mixture_dzizjs(zs=zs, Bijs=Bijs)
[[-1.248e-05, -4.023e-05, -7.89e-05], [-4.023e-05, -8.782e-05, -0.0001292], [-7.89e-05, -0.0001292, -0.00024]]
chemicals.virial.d3BVirial_mixture_dzizjzks(zs, Bijs, d3B_dzizjzks=None)[source]

Calculate third mole fraction derivative of the B third virial coefficient from a matrix of virial cross-coefficients.

3Bxixjxk=0\frac{\partial^3 B}{\partial x_i \partial x_j \partial x_k} = 0
Parameters
zslist[float]

Mole fractions of each species, [-]

Bijslist[list[float]]

Second virial coefficient in density form [m^3/mol]

d3B_dzizjzkslist[list[list[float]]]

Array for third mole fraction derivatives of second virial coefficient in density form [m^3/mol]

Returns
d3B_dzizjzkslist[list[list[float]]]

Third mole fraction derivatives of second virial coefficient in density form [m^3/mol]

Examples

>>> Bijs = [[-6.24e-06, -2.013e-05, -3.9e-05], [-2.01e-05, -4.391e-05, -6.46e-05], [-3.99e-05, -6.46e-05, -0.00012]]
>>> zs = [.5, .3, .2]
>>> d3BVirial_mixture_dzizjzks(zs=zs, Bijs=Bijs)
[[[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]]
chemicals.virial.CVirial_mixture_Orentlicher_Prausnitz(zs, Cijs)[source]

Calculate the C third virial coefficient from a matrix of virial cross-coefficients. The diagonal is virial coefficients of the pure components.

C=ijkyiyjykCijk(T)C = \sum_i \sum_j \sum_k y_i y_j y_k C_{ijk}(T)
Cijk=(CijCjkCik)1/3C_{ijk} = \left(C_{ij}C_{jk}C_{ik}\right)^{1/3}
Parameters
zslist[float]

Mole fractions of each species, [-]

Cijslist[list[float]]

Third virial binary interaction coefficients in density form [m^6/mol^2]

Returns
Cfloat

Third virial coefficient in density form [m^6/mol^2]

References

1

Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.

Examples

>>> Cijs = [[1.46e-09, 1.831e-09, 2.12e-09], [1.831e-09, 2.46e-09, 2.996e-09], [2.12e-09, 2.996e-09, 4.927e-09]]
>>> zs = [.5, .3, .2]
>>> CVirial_mixture_Orentlicher_Prausnitz(zs, Cijs)
2.0790440095e-09
chemicals.virial.dCVirial_mixture_dT_Orentlicher_Prausnitz(zs, Cijs, dCij_dTs)[source]

Calculate the first temperature derivative of the C third virial coefficient from matrices of virial cross-coefficients and their first temperature derivatives.

CT=ijkzizjzkCij(T)Cik(T)Cjk(T)3(Cij(T)Cik(T)ddTCjk(T)3+Cij(T)Cjk(T)ddTCik(T)3+Cik(T)Cjk(T)ddTCij(T)3)Cij(T)Cik(T)Cjk(T)\frac{\partial C}{\partial T} = \sum_i \sum_j \sum_k \frac{zi zj zk \sqrt[3]{\operatorname{Cij}{\left(T \right)} \operatorname{Cik}{\left(T \right)} \operatorname{Cjk}{\left(T \right)}} \left(\frac{\operatorname{Cij}{\left(T \right)} \operatorname{Cik}{\left(T \right)} \frac{d}{d T} \operatorname{Cjk}{\left(T \right)}}{3} + \frac{\operatorname{Cij}{\left(T \right)} \operatorname{Cjk}{\left(T \right)} \frac{d}{d T} \operatorname{Cik}{\left(T \right)}}{3} + \frac{\operatorname{Cik}{\left(T \right)} \operatorname{Cjk}{\left(T \right)} \frac{d}{d T} \operatorname{Cij}{\left(T \right)}}{3}\right)}{\operatorname{Cij}{\left(T \right)} \operatorname{Cik}{\left(T \right)} \operatorname{Cjk}{\left(T \right)}}
Parameters
zslist[float]

Mole fractions of each species, [-]

Cijslist[list[float]]

Third virial binary interaction coefficients in density form [m^6/mol^2]

dCij_dTslist[list[float]]

First temperature derivative of third virial binary interaction coefficients in density form [m^6/mol^2/K]

Returns
dC_dTfloat

First temperature derivative of third virial coefficient in density form [m^6/mol^2/K]

References

1

Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.

Examples

>>> Cijs = [[1.46e-09, 1.831e-09, 2.12e-09], [1.831e-09, 2.46e-09, 2.996e-09], [2.12e-09, 2.996e-09, 4.927e-09]]
>>> dCij_dTs = [[-2.212e-12, -4.137e-12, -1.079e-11], [-4.137e-12, -7.669e-12, -1.809e-11], [-1.079e-11, -1.809e-11, -2.010e-11]]
>>> zs = [.5, .3, .2]
>>> dCVirial_mixture_dT_Orentlicher_Prausnitz(zs, Cijs, dCij_dTs)
-7.2751517e-12
chemicals.virial.d2CVirial_mixture_dT2_Orentlicher_Prausnitz(zs, Cijs, dCij_dTs, d2Cij_dT2s)[source]

Calculate the second temperature derivative of the C third virial coefficient from matrices of virial cross-coefficients and their first and second temperature derivatives.

2CT2=ijkzizjzkCij(T)Cik(T)Cjk(T)3((Cij(T)Cik(T)ddTCjk(T)+Cij(T)Cjk(T)ddTCik(T)+Cik(T)Cjk(T)ddTCij(T))2Cij(T)Cik(T)Cjk(T)3(Cij(T)Cik(T)ddTCjk(T)+Cij(T)Cjk(T)ddTCik(T)+Cik(T)Cjk(T)ddTCij(T))ddTCjk(T)Cjk(T)3(Cij(T)Cik(T)ddTCjk(T)+Cij(T)Cjk(T)ddTCik(T)+Cik(T)Cjk(T)ddTCij(T))ddTCik(T)Cik(T)3(Cij(T)Cik(T)ddTCjk(T)+Cij(T)Cjk(T)ddTCik(T)+Cik(T)Cjk(T)ddTCij(T))ddTCij(T)Cij(T)+3Cij(T)Cik(T)d2dT2Cjk(T)+3Cij(T)Cjk(T)d2dT2Cik(T)+6Cij(T)ddTCik(T)ddTCjk(T)+3Cik(T)Cjk(T)d2dT2Cij(T)+6Cik(T)ddTCij(T)ddTCjk(T)+6Cjk(T)ddTCij(T)ddTCik(T))9Cij(T)Cik(T)Cjk(T)\frac{\partial^2 C}{\partial T^2} = \sum_i \sum_j \sum_k z_i z_j z_k \frac{\sqrt[3]{\operatorname{Cij}{\left(T \right)} \operatorname{Cik}{\left(T \right)} \operatorname{Cjk}{\left(T \right)}} \left(\frac{\left(\operatorname{Cij}{\left(T \right)} \operatorname{Cik}{\left(T \right)} \frac{d}{d T} \operatorname{Cjk}{\left(T \right)} + \operatorname{Cij}{\left(T \right)} \operatorname{Cjk}{\left(T \right)} \frac{d}{d T} \operatorname{Cik}{\left(T \right)} + \operatorname{Cik}{\left(T \right)} \operatorname{Cjk}{\left(T \right)} \frac{d}{d T} \operatorname{Cij}{\left(T \right)}\right)^{2}} {\operatorname{Cij}{\left(T \right)} \operatorname{Cik}{\left(T \right)} \operatorname{Cjk}{\left(T \right)}} - \frac{3 \left(\operatorname{Cij}{\left(T \right)} \operatorname{Cik}{\left(T \right)} \frac{d}{d T} \operatorname{Cjk}{\left(T \right)} + \operatorname{Cij}{\left(T \right)} \operatorname{Cjk}{\left(T \right)} \frac{d}{d T} \operatorname{Cik}{\left(T \right)} + \operatorname{Cik}{\left(T \right)} \operatorname{Cjk}{\left(T \right)} \frac{d}{d T} \operatorname{Cij}{\left(T \right)}\right) \frac{d}{d T} \operatorname{Cjk}{\left(T \right)}}{\operatorname{Cjk}{\left(T \right)}} - \frac{3 \left(\operatorname{Cij}{\left(T \right)} \operatorname{Cik}{\left(T \right)} \frac{d}{d T} \operatorname{Cjk}{\left(T \right)} + \operatorname{Cij}{\left(T \right)} \operatorname{Cjk}{\left(T \right)} \frac{d}{d T} \operatorname{Cik}{\left(T \right)} + \operatorname{Cik}{\left(T \right)} \operatorname{Cjk}{\left(T \right)} \frac{d}{d T} \operatorname{Cij}{\left(T \right)}\right) \frac{d}{d T} \operatorname{Cik}{\left(T \right)}} {\operatorname{Cik}{\left(T \right)}} - \frac{3 \left(\operatorname{Cij}{\left(T \right)} \operatorname{Cik}{\left(T \right)} \frac{d}{d T} \operatorname{Cjk}{\left(T \right)} + \operatorname{Cij}{\left(T \right)} \operatorname{Cjk}{\left(T \right)} \frac{d}{d T} \operatorname{Cik}{\left(T \right)} + \operatorname{Cik}{\left(T \right)} \operatorname{Cjk}{\left(T \right)} \frac{d}{d T} \operatorname{Cij}{\left(T \right)}\right) \frac{d}{d T} \operatorname{Cij}{\left(T \right)}}{\operatorname{Cij}{\left(T \right)}} + 3 \operatorname{Cij}{\left(T \right)} \operatorname{Cik}{\left(T \right)} \frac{d^{2}}{d T^{2}} \operatorname{Cjk}{\left(T \right)} + 3 \operatorname{Cij}{\left(T \right)} \operatorname{Cjk}{\left(T \right)} \frac{d^{2}}{d T^{2}} \operatorname{Cik}{\left(T \right)} + 6 \operatorname{Cij}{\left(T \right)} \frac{d}{d T} \operatorname{Cik}{\left(T \right)} \frac{d}{d T} \operatorname{Cjk}{\left(T \right)} + 3 \operatorname{Cik}{\left(T \right)} \operatorname{Cjk}{\left(T \right)} \frac{d^{2}}{d T^{2}} \operatorname{Cij}{\left(T \right)} + 6 \operatorname{Cik}{\left(T \right)} \frac{d}{d T} \operatorname{Cij}{\left(T \right)} \frac{d}{d T} \operatorname{Cjk}{\left(T \right)} + 6 \operatorname{Cjk}{\left(T \right)} \frac{d}{d T} \operatorname{Cij}{\left(T \right)} \frac{d}{d T} \operatorname{Cik}{\left(T \right)}\right)}{9 \operatorname{Cij}{\left(T \right)} \operatorname{Cik}{\left(T \right)} \operatorname{Cjk}{\left(T \right)}}
Parameters
zslist[float]

Mole fractions of each species, [-]

Cijslist[list[float]]

Third virial binary interaction coefficients in density form [m^6/mol^2]

dCij_dTslist[list[float]]

First temperature derivative of third virial binary interaction coefficients in density form [m^6/mol^2/K]

d2Cij_dT2slist[list[float]]

Second temperature derivative of third virial binary interaction coefficients in density form [m^6/mol^2/K^2]

Returns
d2C_dT2float

Second temperature derivative of third virial coefficient in density form [m^6/mol^2/K^2]

References

1

Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.

Examples

>>> Cijs = [[1.46e-09, 1.831e-09, 2.12e-09], [1.831e-09, 2.46e-09, 2.996e-09], [2.12e-09, 2.996e-09, 4.927e-09]]
>>> dCij_dTs = [[-2.212e-12, -4.137e-12, -1.079e-11], [-4.137e-12, -7.669e-12, -1.809e-11], [-1.079e-11, -1.809e-11, -2.010e-11]]
>>> d2Cij_dT2s = [[ 2.6469e-14,  5.0512e-14,  1.1509e-13], [ 5.0512e-14,  9.3272e-14,  1.7836e-13], [ 1.1509e-13,  1.7836e-13, -1.4906e-13]]
>>> zs = [.5, .3, .2]
>>> d2CVirial_mixture_dT2_Orentlicher_Prausnitz(zs, Cijs, dCij_dTs, d2Cij_dT2s)
6.7237107787e-14
chemicals.virial.d3CVirial_mixture_dT3_Orentlicher_Prausnitz(zs, Cijs, dCij_dTs, d2Cij_dT2s, d3Cij_dT3s)[source]

Calculate the third temperature derivative of the C third virial coefficient from matrices of virial cross-coefficients and their first, second, and third temperature derivatives.

The expression is quite lengthy and not shown here [1].

3CT3\frac{\partial^3 C}{\partial T^3}
Parameters
zslist[float]

Mole fractions of each species, [-]

Cijslist[list[float]]

Third virial binary interaction coefficients in density form [m^6/mol^2]

dCij_dTslist[list[float]]

First temperature derivative of third virial binary interaction coefficients in density form [m^6/mol^2/K]

d2Cij_dT2slist[list[float]]

Second temperature derivative of third virial binary interaction coefficients in density form [m^6/mol^2/K^2]

d3Cij_dT3slist[list[float]]

Third temperature derivative of third virial binary interaction coefficients in density form [m^6/mol^2/K^2^2]

Returns
d3C_dT3float

Third temperature derivative of third virial coefficient in density form [m^6/mol^2/K^3]

References

1

Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.

Examples

>>> Cijs = [[1.46e-09, 1.831e-09, 2.12e-09], [1.831e-09, 2.46e-09, 2.996e-09], [2.12e-09, 2.996e-09, 4.927e-09]]
>>> dCij_dTs = [[-2.212e-12, -4.137e-12, -1.079e-11], [-4.137e-12, -7.669e-12, -1.809e-11], [-1.079e-11, -1.809e-11, -2.010e-11]]
>>> d2Cij_dT2s = [[ 2.6469e-14,  5.0512e-14,  1.1509e-13], [ 5.0512e-14,  9.3272e-14,  1.7836e-13], [ 1.1509e-13,  1.7836e-13, -1.4906e-13]]
>>> d3Cij_dT3s = [[-4.2300e-16, -7.9727e-16, -1.6962e-15], [-7.9727e-16, -1.3826e-15, -1.4525e-15], [-1.6962e-15, -1.4525e-15,  1.9786e-14]]
>>> zs = [.5, .3, .2]
>>> d3CVirial_mixture_dT3_Orentlicher_Prausnitz(zs, Cijs, dCij_dTs, d2Cij_dT2s, d3Cij_dT3s)
-3.7358368e-16
chemicals.virial.dCVirial_mixture_Orentlicher_Prausnitz_dzs(zs, Cijs, dCs=None)[source]

Calculate the first mole fraction derivatives of the C third virial coefficient from a matrix of virial cross-coefficients.

Czm=0inc0jnc0kncCsi,jCsi,kCsj,k3(δimzsjzsk+δjmzsizsk+δkmzsizsj)\frac{\partial C}{\partial z_m} = \sum_{\substack{0 \leq i \leq nc\\0 \leq j \leq nc\\0 \leq k \leq nc}} \sqrt[3]{{Cs}_{i,j} {Cs}_{i,k} {Cs}_{j,k}} \left(\delta_{i m} {zs}_{j} {zs}_{k} + \delta_{j m} {zs}_{i} {zs}_{k} + \delta_{k m} {zs}_{i} {zs}_{j}\right)
Parameters
zslist[float]

Mole fractions of each species, [-]

Cijslist[list[float]]

Third virial binary interaction coefficients in density form [m^6/mol^2]

dCslist[float], optional

First derivatives of C with respect to mole fraction, [m^6/mol^2]

Returns
dC_dzslist[float]

First derivatives of C with respect to mole fraction, [m^6/mol^2]

Notes

This equation can be derived with SymPy, as follows

>>> from sympy import * 
>>> i, j, k, m, n, o = symbols("i, j, k, m, n, o", cls=Idx) 
>>> zs = IndexedBase('zs') 
>>> Cs = IndexedBase('Cs') 
>>> nc = symbols('nc') 
>>> C_expr = Sum(zs[i]*zs[j]*zs[k]*cbrt(Cs[i,j]*Cs[i,k]*Cs[j,k]),[i,0,nc],[j,0,nc],[k,0,nc]) 
>>> diff(C_expr, zs[m]) 
Sum((Cs[i, j]*Cs[i, k]*Cs[j, k])**(1/3)*KroneckerDelta(i, m)*zs[j]*zs[k] + (Cs[i, j]*Cs[i, k]*Cs[j, k])**(1/3)*KroneckerDelta(j, m)*zs[i]*zs[k] + (Cs[i, j]*Cs[i, k]*Cs[j, k])**(1/3)*KroneckerDelta(k, m)*zs[i]*zs[j], (i, 0, nc), (j, 0, nc), (k, 0, nc))

Examples

>>> Cijs = [[1.46e-09, 1.831e-09, 2.12e-09], [1.831e-09, 2.46e-09, 2.996e-09], [2.12e-09, 2.996e-09, 4.927e-09]]
>>> zs = [.5, .3, .2]
>>> dCVirial_mixture_Orentlicher_Prausnitz_dzs(zs, Cijs)
[5.44450470e-09, 6.54968776e-09, 7.74986672e-09]
chemicals.virial.d2CVirial_mixture_Orentlicher_Prausnitz_dzizjs(zs, Cijs, d2Cs=None)[source]

Calculate the second mole fraction derivatives of the C third virial coefficient from a matrix of virial cross-coefficients.

2Czmzn=0inc0jnc0kncCsi,jCsi,kCsj,k3(δimδjnzsk+δimδknzsj+δinδjmzsk+δinδkmzsj+δjmδknzsi+δjnδkmzsi)\frac{\partial^2 C}{\partial z_m \partial z_n} = \sum_{\substack{0 \leq i \leq nc\\0 \leq j \leq nc\\0 \leq k \leq nc}} \sqrt[3]{{Cs}_{i,j} {Cs}_{i,k} {Cs}_{j,k}} \left(\delta_{i m} \delta_{j n} {zs}_{k} + \delta_{i m} \delta_{k n} {zs}_{j} + \delta_{i n} \delta_{j m} {zs}_{k} + \delta_{i n} \delta_{k m} {zs}_{j} + \delta_{j m} \delta_{k n} {zs}_{i} + \delta_{j n} \delta_{k m} {zs}_{i}\right)
Parameters
zslist[float]

Mole fractions of each species, [-]

Cijslist[list[float]]

Third virial binary interaction coefficients in density form [m^6/mol^2]

d2Cslist[list[float]], optional

Second derivatives of C with respect to mole fraction, [m^6/mol^2]

Returns
d2Cslist[list[float]]

Second derivatives of C with respect to mole fraction, [m^6/mol^2]

Notes

This equation can be derived with SymPy, as follows

>>> from sympy import * 
>>> i, j, k, m, n, o = symbols("i, j, k, m, n, o", cls=Idx) 
>>> zs = IndexedBase('zs') 
>>> Cs = IndexedBase('Cs') 
>>> nc = symbols('nc') 
>>> C_expr = Sum(zs[i]*zs[j]*zs[k]*cbrt(Cs[i,j]*Cs[i,k]*Cs[j,k]),[i,0,nc],[j,0,nc],[k,0,nc]) 
>>> diff(C_expr, zs[m], zs[n]) 
Sum((Cs[i, j]*Cs[i, k]*Cs[j, k])**(1/3)*(KroneckerDelta(i, m)*KroneckerDelta(j, n)*zs[k] + KroneckerDelta(i, m)*KroneckerDelta(k, n)*zs[j] + KroneckerDelta(i, n)*KroneckerDelta(j, m)*zs[k] + KroneckerDelta(i, n)*KroneckerDelta(k, m)*zs[j] + KroneckerDelta(j, m)*KroneckerDelta(k, n)*zs[i] + KroneckerDelta(j, n)*KroneckerDelta(k, m)*zs[i]), (i, 0, nc), (j, 0, nc), (k, 0, nc))

Examples

>>> Cijs = [[1.46e-09, 1.831e-09, 2.12e-09], [1.831e-09, 2.46e-09, 2.996e-09], [2.12e-09, 2.996e-09, 4.927e-09]]
>>> zs = [.5, .3, .2]
>>> d2CVirial_mixture_Orentlicher_Prausnitz_dzizjs(zs, Cijs)
[[9.6827886655e-09, 1.1449146725e-08, 1.3064355337e-08], [1.1449146725e-08, 1.38557674294e-08, 1.60903596751e-08], [1.3064355337e-08, 1.60903596751e-08, 2.0702239403e-08]]
chemicals.virial.d3CVirial_mixture_Orentlicher_Prausnitz_dzizjzks(zs, Cijs, d3Cs=None)[source]

Calculate the third mole fraction derivatives of the C third virial coefficient from a matrix of virial cross-coefficients.

3Czmznzo=0inc0jnc0kncCsi,jCsi,kCsj,k3(δimδjnδko+δimδjoδkn+δinδjmδko+δinδjoδkm+δioδjmδkn+δioδjnδkm)\frac{\partial^3 C}{\partial z_m \partial z_n \partial z_o} = \sum_{\substack{0 \leq i \leq nc\\0 \leq j \leq nc\\0 \leq k \leq nc}} \sqrt[3]{{Cs}_{i,j} {Cs}_{i,k} {Cs}_{j,k}} \left(\delta_{i m} \delta_{j n} \delta_{k o} + \delta_{i m} \delta_{j o} \delta_{k n} + \delta_{i n} \delta_{j m} \delta_{k o} + \delta_{i n} \delta_{j o} \delta_{k m} + \delta_{i o} \delta_{j m} \delta_{k n} + \delta_{i o} \delta_{j n} \delta_{k m}\right)
Parameters
zslist[float]

Mole fractions of each species, [-]

Cijslist[list[float]]

Third virial binary interaction coefficients in density form [m^6/mol^2]

d3Cslist[list[list[float]]], optional

Third derivatives of C with respect to mole fraction, [m^6/mol^2]

Returns
d3Cslist[list[list[float]]]

Third derivatives of C with respect to mole fraction, [m^6/mol^2]

Notes

This equation can be derived with SymPy, as follows

>>> from sympy import * 
>>> i, j, k, m, n, o = symbols("i, j, k, m, n, o", cls=Idx) 
>>> zs = IndexedBase('zs') 
>>> Cs = IndexedBase('Cs') 
>>> nc = symbols('nc') 
>>> C_expr = Sum(zs[i]*zs[j]*zs[k]*cbrt(Cs[i,j]*Cs[i,k]*Cs[j,k]),[i,0,nc],[j,0,nc],[k,0,nc]) 
>>> diff(C_expr, zs[m], zs[n], zs[o]) 
Sum((Cs[i, j]*Cs[i, k]*Cs[j, k])**(1/3)*(KroneckerDelta(i, m)*KroneckerDelta(j, n)*KroneckerDelta(k, o) + KroneckerDelta(i, m)*KroneckerDelta(j, o)*KroneckerDelta(k, n) + KroneckerDelta(i, n)*KroneckerDelta(j, m)*KroneckerDelta(k, o) + KroneckerDelta(i, n)*KroneckerDelta(j, o)*KroneckerDelta(k, m) + KroneckerDelta(i, o)*KroneckerDelta(j, m)*KroneckerDelta(k, n) + KroneckerDelta(i, o)*KroneckerDelta(j, n)*KroneckerDelta(k, m)), (i, 0, nc), (j, 0, nc), (k, 0, nc))

Examples

>>> Cijs = [[1.46e-09, 1.831e-09, 2.12e-09], [1.831e-09, 2.46e-09, 2.996e-09], [2.12e-09, 2.996e-09, 4.927e-09]]
>>> zs = [.5, .3, .2]
>>> d3CVirial_mixture_Orentlicher_Prausnitz_dzizjzks(zs, Cijs)
[[[8.760000000e-09, 1.0187346981e-08, 1.12329228549e-08], [1.01873469818e-08, 1.21223973593e-08, 1.35937701316e-08], [1.12329228549e-08, 1.35937701316e-08, 1.68488143533e-08]], [[1.01873469818e-08, 1.21223973593e-08, 1.35937701316e-08], [1.2122397359e-08, 1.47600000000e-08, 1.68328437491e-08], [1.35937701316e-08, 1.68328437491e-08, 2.12181074230e-08]], [[1.12329228549e-08, 1.35937701316e-08, 1.68488143533e-08], [1.35937701316e-08, 1.68328437491e-08, 2.12181074230e-08], [1.68488143533e-08, 2.12181074230e-08, 2.9562000000e-08]]]
chemicals.virial.d2CVirial_mixture_Orentlicher_Prausnitz_dTdzs(zs, Cijs, dCij_dTs, d2C_dTdzs=None)[source]

Calculate the first mole fraction derivatives of the C third virial coefficient from a matrix of virial cross-coefficients.

2CTzm\frac{\partial^2 C}{\partial T \partial z_m}
Parameters
zslist[float]

Mole fractions of each species, [-]

Cijslist[list[float]]

Third virial binary interaction coefficients in density form [m^6/mol^2]

dCij_dTslist[list[float]]

First temperature derivative of third virial binary interaction coefficients in density form [m^6/mol^2/K]

d2C_dTdzslist[float], optional

Array for second derivatives of C with respect to mole fraction and temperature, [m^6/mol^2/K]

Returns
d2C_dTdzslist[float]

Second derivatives of C with respect to mole fraction and temperature, [m^6/mol^2/K]

Notes

This equation can be derived with SymPy, as follows

>>> from sympy import * 
>>> from sympy import * 
>>> i, j, k, m, n, o, T = symbols("i, j, k, m, n, o, T", cls=Idx) 
>>> zs = IndexedBase('zs') 
>>> Cs = IndexedBase('Cs') 
>>> dC_dTs = IndexedBase('dC_dTs') 
>>> nc = symbols('nc') 
>>> C_expr = Sum(zs[i]*zs[j]*zs[k]/3*cbrt(Cs[i,j]*Cs[i,k]*Cs[j,k])/(Cs[i,j]*Cs[i,k]*Cs[j,k])*(Cs[i,j]*Cs[i,k]*dC_dTs[j,k] + Cs[i,j]*dC_dTs[i,k]*Cs[j,k] + dC_dTs[i,j]*Cs[i,k]*Cs[j,k]),[i,0,nc],[j,0,nc],[k,0,nc]) 
>>> diff(C_expr, zs[m]) 
Sum((Cs[i, j]*Cs[i, k]*Cs[j, k])**(1/3)*(Cs[i, j]*Cs[i, k]*dC_dTs[j, k] + Cs[i, j]*Cs[j, k]*dC_dTs[i, k] + Cs[i, k]*Cs[j, k]*dC_dTs[i, j])*KroneckerDelta(i, m)*zs[j]*zs[k]/(3*Cs[i, j]*Cs[i, k]*Cs[j, k]) + (Cs[i, j]*Cs[i, k]*Cs[j, k])**(1/3)*(Cs[i, j]*Cs[i, k]*dC_dTs[j, k] + Cs[i, j]*Cs[j, k]*dC_dTs[i, k] + Cs[i, k]*Cs[j, k]*dC_dTs[i, j])*KroneckerDelta(j, m)*zs[i]*zs[k]/(3*Cs[i, j]*Cs[i, k]*Cs[j, k]) + (Cs[i, j]*Cs[i, k]*Cs[j, k])**(1/3)*(Cs[i, j]*Cs[i, k]*dC_dTs[j, k] + Cs[i, j]*Cs[j, k]*dC_dTs[i, k] + Cs[i, k]*Cs[j, k]*dC_dTs[i, j])*KroneckerDelta(k, m)*zs[i]*zs[j]/(3*Cs[i, j]*Cs[i, k]*Cs[j, k]), (i, 0, nc), (j, 0, nc), (k, 0, nc))

Examples

>>> Cijs = [[1.46e-09, 1.831e-09, 2.12e-09], [1.831e-09, 2.46e-09, 2.996e-09], [2.12e-09, 2.996e-09, 4.927e-09]]
>>> dCij_dTs = [[-2.212e-12, -4.137e-12, -1.079e-11], [-4.137e-12, -7.669e-12, -1.809e-11], [-1.079e-11, -1.809e-11, -2.010e-11]]
>>> zs = [.5, .3, .2]
>>> d2CVirial_mixture_Orentlicher_Prausnitz_dTdzs(zs, Cijs, dCij_dTs)
[-1.5740994103e-11, -2.27267309501e-11, -3.56846953115e-11]
chemicals.virial.dV_dzs_virial(B, C, V, dB_dzs, dC_dzs, dV_dzs=None)[source]

Calculates first mole fraction derivative of volume for the virial equation of state.

Vzi=V(VBzi+Czi)2BV+3C+V2\frac{\partial V}{\partial z_i} = \frac{V(V\frac{\partial B}{\partial z_i} + \frac{\partial C}{\partial z_i} )}{2BV + 3C + V^2}
Parameters
Bfloat

Second virial coefficient in density form [m^3/mol]

Cfloat

Third virial coefficient in density form [m^6/mol^2]

Vfloat

Molar volume from virial equation, [m^3/mol]

dB_dzslist[float]

First mole fraction derivatives of second virial coefficient in density form [m^3/mol]

dC_dzslist[float]

First derivatives of C with respect to mole fraction, [m^6/mol^2]

dV_dzslist[float], optional

Array for first derivatives of molar volume with respect to mole fraction, [m^3/mol]

Returns
dV_dzslist[float]

First derivatives of molar volume with respect to mole fraction, [m^3/mol]

Notes

This expression was derived with SymPy as follows:

>>> from sympy import * 
>>> Z, R, T, P, z1 = symbols('Z, R, T, P, z1') 
>>> B, C, V = symbols('B, C, V', cls=Function) 
>>> base =Eq(P*V(z1)/(R*T), 1 + B(z1)/V(z1) + C(z1)/V(z1)**2) 
>>> P_sln = solve(base, P)[0] 
>>> solve(diff(P_sln, z1), Derivative(V(z1), z1)) 
[(V(z1)*Derivative(B(z1), z1) + Derivative(C(z1), z1))*V(z1)/(2*B(z1)*V(z1) + 3*C(z1) + V(z1)**2)]

Examples

>>> dV_dzs_virial(B=-5.130920247359858e-05, C=2.6627784284381213e-09, V=0.024892080086430797, dB_dzs=[-4.457911131778849e-05, -9.174964457681726e-05, -0.0001594258679841028], dC_dzs=[6.270599057032657e-09, 7.766612052069565e-09, 9.503031492910165e-09])
[-4.4510120473455416e-05, -9.181495962913208e-05, -0.00015970040988493522]
chemicals.virial.d2V_dzizjs_virial(B, C, V, dB_dzs, dC_dzs, dV_dzs, d2B_dzizjs, d2C_dzizjs, d2V_dzizjs=None)[source]

Calculates second mole fraction derivative of volume for the virial equation of state.

2Vzizj\frac{\partial^2 V}{\partial z_i \partial z_j}
Parameters
Bfloat

Second virial coefficient in density form [m^3/mol]

Cfloat

Third virial coefficient in density form [m^6/mol^2]

Vfloat

Molar volume from virial equation, [m^3/mol]

dB_dzslist[float]

First mole fraction derivatives of second virial coefficient in density form [m^3/mol]

dC_dzslist[float]

First derivatives of C with respect to mole fraction, [m^6/mol^2]

dV_dzslist[float]

First derivatives of molar volume with respect to mole fraction, [m^3/mol]

d2B_dzizjslist[list[float]]

Second mole fraction derivatives of second virial coefficient in density form [m^3/mol]

d2C_dzizjslist[list[float]]

Second derivatives of C with respect to mole fraction, [m^6/mol^2]

d2V_dzizjslist[list[float]], optional

Array for second derivatives of molar volume with respect to mole fraction, [m^3/mol]

Returns
d2V_dzizjslist[list[float]]

Second derivatives of molar volume with respect to mole fraction, [m^3/mol]

Notes

This expression was derived with SymPy as follows:

>>> from sympy import * 
>>> Z, R, T, P, z1 = symbols('Z, R, T, P, z1') 
>>> B, C, V = symbols('B, C, V', cls=Function) 
>>> base =Eq(P*V(z1)/(R*T), 1 + B(z1)/V(z1) + C(z1)/V(z1)**2) 
>>> P_sln = solve(base, P)[0] 
>>> solve(diff(P_sln, z1), Derivative(V(z1), z1)) 
[(V(z1)*Derivative(B(z1), z1) + Derivative(C(z1), z1))*V(z1)/(2*B(z1)*V(z1) + 3*C(z1) + V(z1)**2)]

Examples

>>> d2C_dzizjs = [[1.0287075724127612e-08, 1.2388277824773021e-08, 1.4298813522844275e-08], [1.2388277824773021e-08, 1.514162073913238e-08, 1.8282527232061114e-08], [1.4298813522844275e-08, 1.8282527232061114e-08, 2.3350122217403063e-08]]
>>> d2B_dzizjs = [[-1.0639357784985337e-05, -3.966321845899801e-05, -7.53987684376414e-05], [-3.966321845899801e-05, -8.286257232134107e-05, -0.00014128571574782375], [-7.53987684376414e-05, -0.00014128571574782375, -0.00024567752140887547]]
>>> dB_dzs = [-4.457911131778849e-05, -9.174964457681726e-05, -0.0001594258679841028]
>>> dC_dzs = [6.270599057032657e-09, 7.766612052069565e-09, 9.503031492910165e-09]
>>> dV_dzs = [-4.4510120473455416e-05, -9.181495962913208e-05, -0.00015970040988493522]
>>> d2V_dzizjs_virial(B=-5.130920247359858e-05, C=2.6627784284381213e-09, V=0.024892080086430797, dB_dzs=dB_dzs, dC_dzs=dC_dzs, dV_dzs=dV_dzs, d2B_dzizjs=d2B_dzizjs, d2C_dzizjs=d2C_dzizjs)
[[-1.04268917389e-05, -3.9654694588e-05, -7.570310078e-05], [-3.9654694588e-05, -8.3270116767e-05, -0.0001423083584], [-7.5703100789e-05, -0.000142308358, -0.00024779788]]

Second Virial Correlations

chemicals.virial.BVirial_Pitzer_Curl(T, Tc, Pc, omega, order=0)[source]

Calculates the second virial coefficient using the model in [1]. Designed for simple calculations.

Br=B(0)+ωB(1)B_r=B^{(0)}+\omega B^{(1)}
B(0)=0.14450.33/Tr0.1385/Tr20.0121/Tr3B^{(0)}=0.1445-0.33/T_r-0.1385/T_r^2-0.0121/T_r^3
B(1)=0.073+0.46/Tr0.5/Tr20.097/Tr30.0073/Tr8B^{(1)} = 0.073+0.46/T_r-0.5/T_r^2 -0.097/T_r^3 - 0.0073/T_r^8
Parameters
Tfloat

Temperature of fluid [K]

Tcfloat

Critical temperature of fluid [K]

Pcfloat

Critical pressure of the fluid [Pa]

omegafloat

Acentric factor for fluid, [-]

orderint, optional

Order of the calculation. 0 for the calculation of B itself; for 1/2/3, the first/second/third derivative of B with respect to temperature; and for -1/-2, the first/second indefinite integral of B with respect to temperature. No other integrals or derivatives are implemented, and an exception will be raised if any other order is given.

Returns
Bfloat

Second virial coefficient in density form or its integral/derivative if specified, [m^3/mol or m^3/mol/K^order]

Notes

Analytical models for derivatives and integrals are available for orders -2, -1, 1, 2, and 3, all obtained with SymPy.

For first temperature derivative of B:

dB(0)dT=33Tc100T2+277Tc21000T3+363Tc310000T4\frac{d B^{(0)}}{dT} = \frac{33 Tc}{100 T^{2}} + \frac{277 Tc^{2}}{1000 T^{3}} + \frac{363 Tc^{3}}{10000 T^{4}}
dB(1)dT=23Tc50T2+Tc2T3+291Tc31000T4+73Tc81250T9\frac{d B^{(1)}}{dT} = - \frac{23 Tc}{50 T^{2}} + \frac{Tc^{2}}{T^{3}} + \frac{291 Tc^{3}}{1000 T^{4}} + \frac{73 Tc^{8}}{1250 T^{9}}

For the second temperature derivative of B:

d2B(0)dT2=3Tc5000T3(1100+1385TcT+242Tc2T2)\frac{d^2 B^{(0)}}{dT^2} = - \frac{3 Tc}{5000 T^{3}} \left(1100 + \frac{1385 Tc}{T} + \frac{242 Tc^{2}}{T^{2}}\right)
d2B(1)dT2=TcT3(23253TcT291Tc2250T2657Tc71250T7)\frac{d^2 B^{(1)}}{dT^2} = \frac{Tc}{T^{3}} \left(\frac{23}{25} - \frac{3 Tc}{T} - \frac{291 Tc^{2}}{250 T^{2}} - \frac{657 Tc^{7}}{1250 T^{7}}\right)

For the third temperature derivative of B:

d3B(0)dT3=3Tc500T4(330+554TcT+121Tc2T2)\frac{d^3 B^{(0)}}{dT^3} = \frac{3 Tc}{500 T^{4}} \left(330 + \frac{554 Tc}{T} + \frac{121 Tc^{2}}{T^{2}}\right)
d3B(1)dT3=3TcT4(2325+4TcT+97Tc250T2+219Tc7125T7)\frac{d^3 B^{(1)}}{dT^3} = \frac{3 Tc}{T^{4}} \left(- \frac{23}{25} + \frac{4 Tc}{T} + \frac{97 Tc^{2}}{50 T^{2}} + \frac{219 Tc^{7}}{125 T^{7}}\right)

For the first indefinite integral of B:

B(0)dT=289T200033Tc100ln(T)+120000T2(2770TTc2+121Tc3)\int{B^{(0)}} dT = \frac{289 T}{2000} - \frac{33 Tc}{100} \ln{\left (T \right )} + \frac{1}{20000 T^{2}} \left(2770 T Tc^{2} + 121 Tc^{3}\right)
B(1)dT=73T1000+23Tc50ln(T)+170000T7(35000T6Tc2+3395T5Tc3+73Tc8)\int{B^{(1)}} dT = \frac{73 T}{1000} + \frac{23 Tc}{50} \ln{\left (T \right )} + \frac{1}{70000 T^{7}} \left(35000 T^{6} Tc^{2} + 3395 T^{5} Tc^{3} + 73 Tc^{8}\right)

For the second indefinite integral of B:

B(0)dTdT=289T2400033T100Tcln(T)+33T100Tc+277Tc22000ln(T)121Tc320000T\int\int B^{(0)} dT dT = \frac{289 T^{2}}{4000} - \frac{33 T}{100} Tc \ln{\left (T \right )} + \frac{33 T}{100} Tc + \frac{277 Tc^{2}}{2000} \ln{\left (T \right )} - \frac{121 Tc^{3}}{20000 T}
B(1)dTdT=73T22000+23T50Tcln(T)23T50Tc+Tc22ln(T)1420000T6(20370T5Tc3+73Tc8)\int\int B^{(1)} dT dT = \frac{73 T^{2}}{2000} + \frac{23 T}{50} Tc \ln{\left (T \right )} - \frac{23 T}{50} Tc + \frac{Tc^{2}}{2} \ln{\left (T \right )} - \frac{1}{420000 T^{6}} \left(20370 T^{5} Tc^{3} + 73 Tc^{8}\right)

References

1

Pitzer, Kenneth S., and R. F. Curl. “The Volumetric and Thermodynamic Properties of Fluids. III. Empirical Equation for the Second Virial Coefficient1.” Journal of the American Chemical Society 79, no. 10 (May 1, 1957): 2369-70. doi:10.1021/ja01567a007.

Examples

Example matching that in BVirial_Abbott, for isobutane.

>>> BVirial_Pitzer_Curl(510., 425.2, 38E5, 0.193)
-0.00020845362479301725
chemicals.virial.BVirial_Abbott(T, Tc, Pc, omega, order=0)[source]

Calculates the second virial coefficient using the model in [1]. Simple fit to the Lee-Kesler equation.

Br=B(0)+ωB(1)B_r=B^{(0)}+\omega B^{(1)}
B(0)=0.083+0.422Tr1.6B^{(0)}=0.083+\frac{0.422}{T_r^{1.6}}
B(1)=0.1390.172Tr4.2B^{(1)}=0.139-\frac{0.172}{T_r^{4.2}}
Parameters
Tfloat

Temperature of fluid [K]

Tcfloat

Critical temperature of fluid [K]

Pcfloat

Critical pressure of the fluid [Pa]

omegafloat

Acentric factor for fluid, [-]

orderint, optional

Order of the calculation. 0 for the calculation of B itself; for 1/2/3, the first/second/third derivative of B with respect to temperature; and for -1/-2, the first/second indefinite integral of B with respect to temperature. No other integrals or derivatives are implemented, and an exception will be raised if any other order is given.

Returns
Bfloat

Second virial coefficient in density form or its integral/derivative if specified, [m^3/mol or m^3/mol/K^order]

Notes

Analytical models for derivatives and integrals are available for orders -2, -1, 1, 2, and 3, all obtained with SymPy.

For first temperature derivative of B:

dB(0)dT=0.6752T(TTc)1.6\frac{d B^{(0)}}{dT} = \frac{0.6752}{T \left(\frac{T}{Tc}\right)^{1.6}}
dB(1)dT=0.7224T(TTc)4.2\frac{d B^{(1)}}{dT} = \frac{0.7224}{T \left(\frac{T}{Tc}\right)^{4.2}}

For the second temperature derivative of B:

d2B(0)dT2=1.75552T2(TTc)1.6\frac{d^2 B^{(0)}}{dT^2} = - \frac{1.75552}{T^{2} \left(\frac{T}{Tc}\right)^{1.6}}
d2B(1)dT2=3.75648T2(TTc)4.2\frac{d^2 B^{(1)}}{dT^2} = - \frac{3.75648}{T^{2} \left(\frac{T}{Tc}\right)^{4.2}}

For the third temperature derivative of B:

d3B(0)dT3=6.319872T3(TTc)1.6\frac{d^3 B^{(0)}}{dT^3} = \frac{6.319872}{T^{3} \left(\frac{T}{Tc}\right)^{1.6}}
d3B(1)dT3=23.290176T3(TTc)4.2\frac{d^3 B^{(1)}}{dT^3} = \frac{23.290176}{T^{3} \left(\frac{T}{Tc}\right)^{4.2}}

For the first indefinite integral of B:

B(0)dT=0.083T+211300Tc(TTc)0.6\int{B^{(0)}} dT = 0.083 T + \frac{\frac{211}{300} Tc}{\left(\frac{T}{Tc}\right)^{0.6}}
B(1)dT=0.139T+0.05375Tc(TTc)3.2\int{B^{(1)}} dT = 0.139 T + \frac{0.05375 Tc}{\left(\frac{T}{Tc}\right)^{3.2}}

For the second indefinite integral of B:

B(0)dTdT=0.0415T2+211120Tc2(TTc)0.4\int\int B^{(0)} dT dT = 0.0415 T^{2} + \frac{211}{120} Tc^{2} \left(\frac{T}{Tc}\right)^{0.4}
B(1)dTdT=0.0695T2431760Tc2(TTc)2.2\int\int B^{(1)} dT dT = 0.0695 T^{2} - \frac{\frac{43}{1760} Tc^{2}}{\left(\frac{T}{Tc}\right)^{2.2}}

References

1(1,2)

Smith, H. C. Van Ness Joseph M. Introduction to Chemical Engineering Thermodynamics 4E 1987.

Examples

Example is from [1], p. 93, and matches the result exactly, for isobutane.

>>> BVirial_Abbott(510., 425.2, 38E5, 0.193)
-0.000205701850095
chemicals.virial.BVirial_Tsonopoulos(T, Tc, Pc, omega, order=0)[source]

Calculates the second virial coefficient using the model in [1].

Br=B(0)+ωB(1)B_r=B^{(0)}+\omega B^{(1)}
B(0)=0.14450.330/Tr0.1385/Tr20.0121/Tr30.000607/Tr8B^{(0)}= 0.1445-0.330/T_r - 0.1385/T_r^2 - 0.0121/T_r^3 - 0.000607/T_r^8
B(1)=0.0637+0.331/Tr20.423/Tr30.423/Tr30.008/Tr8B^{(1)} = 0.0637+0.331/T_r^2-0.423/T_r^3 -0.423/T_r^3 - 0.008/T_r^8
Parameters
Tfloat

Temperature of fluid [K]

Tcfloat

Critical temperature of fluid [K]

Pcfloat

Critical pressure of the fluid [Pa]

omegafloat

Acentric factor for fluid, [-]

orderint, optional

Order of the calculation. 0 for the calculation of B itself; for 1/2/3, the first/second/third derivative of B with respect to temperature; and for -1/-2, the first/second indefinite integral of B with respect to temperature. No other integrals or derivatives are implemented, and an exception will be raised if any other order is given.

Returns
Bfloat

Second virial coefficient in density form or its integral/derivative if specified, [m^3/mol or m^3/mol/K^order]

Notes

A more complete expression is also available, in BVirial_Tsonopoulos_extended.

Analytical models for derivatives and integrals are available for orders -2, -1, 1, 2, and 3, all obtained with SymPy.

For first temperature derivative of B:

dB(0)dT=33Tc100T2+277Tc21000T3+363Tc310000T4+607Tc8125000T9\frac{d B^{(0)}}{dT} = \frac{33 Tc}{100 T^{2}} + \frac{277 Tc^{2}}{1000 T^{3}} + \frac{363 Tc^{3}}{10000 T^{4}} + \frac{607 Tc^{8}}{125000 T^{9}}
dB(1)dT=331Tc2500T3+1269Tc31000T4+8Tc8125T9\frac{d B^{(1)}}{dT} = - \frac{331 Tc^{2}}{500 T^{3}} + \frac{1269 Tc^{3}}{1000 T^{4}} + \frac{8 Tc^{8}}{125 T^{9}}

For the second temperature derivative of B:

d2B(0)dT2=3Tc125000T3(27500+34625TcT+6050Tc2T2+1821Tc7T7)\frac{d^2 B^{(0)}}{dT^2} = - \frac{3 Tc}{125000 T^{3}} \left(27500 + \frac{34625 Tc}{T} + \frac{6050 Tc^{2}}{T^{2}} + \frac{1821 Tc^{7}}{T^{7}}\right)
d2B(1)dT2=3Tc2500T4(331846TcT96Tc6T6)\frac{d^2 B^{(1)}}{dT^2} = \frac{3 Tc^{2}}{500 T^{4}} \left(331 - \frac{846 Tc}{T} - \frac{96 Tc^{6}}{T^{6}}\right)

For the third temperature derivative of B:

d3B(0)dT3=3Tc12500T4(8250+13850TcT+3025Tc2T2+1821Tc7T7)\frac{d^3 B^{(0)}}{dT^3} = \frac{3 Tc}{12500 T^{4}} \left(8250 + \frac{13850 Tc}{T} + \frac{3025 Tc^{2}}{T^{2}} + \frac{1821 Tc^{7}}{T^{7}}\right)
d3B(1)dT3=3Tc2250T5(662+2115TcT+480Tc6T6)\frac{d^3 B^{(1)}}{dT^3} = \frac{3 Tc^{2}}{250 T^{5}} \left(-662 + \frac{2115 Tc}{T} + \frac{480 Tc^{6}}{T^{6}}\right)

For the first indefinite integral of B:

B(0)dT=289T200033Tc100ln(T)+17000000T7(969500T6Tc2+42350T5Tc3+607Tc8)\int{B^{(0)}} dT = \frac{289 T}{2000} - \frac{33 Tc}{100} \ln{\left (T \right )} + \frac{1}{7000000 T^{7}} \left(969500 T^{6} Tc^{2} + 42350 T^{5} Tc^{3} + 607 Tc^{8}\right)
B(1)dT=637T10000170000T7(23170T6Tc214805T5Tc380Tc8)\int{B^{(1)}} dT = \frac{637 T}{10000} - \frac{1}{70000 T^{7}} \left(23170 T^{6} Tc^{2} - 14805 T^{5} Tc^{3} - 80 Tc^{8}\right)

For the second indefinite integral of B:

B(0)dTdT=289T2400033T100Tcln(T)+33T100Tc+277Tc22000ln(T)142000000T6(254100T5Tc3+607Tc8)\int\int B^{(0)} dT dT = \frac{289 T^{2}}{4000} - \frac{33 T}{100} Tc \ln{\left (T \right )} + \frac{33 T}{100} Tc + \frac{277 Tc^{2}}{2000} \ln{\left (T \right )} - \frac{1}{42000000 T^{6}} \left(254100 T^{5} Tc^{3} + 607 Tc^{8}\right)
B(1)dTdT=637T220000331Tc21000ln(T)1210000T6(44415T5Tc3+40Tc8)\int\int B^{(1)} dT dT = \frac{637 T^{2}}{20000} - \frac{331 Tc^{2}}{1000} \ln{\left (T \right )} - \frac{1}{210000 T^{6}} \left(44415 T^{5} Tc^{3} + 40 Tc^{8}\right)

References

1

Tsonopoulos, Constantine. “An Empirical Correlation of Second Virial Coefficients.” AIChE Journal 20, no. 2 (March 1, 1974): 263-72. doi:10.1002/aic.690200209.

Examples

Example matching that in BVirial_Abbott, for isobutane.

>>> BVirial_Tsonopoulos(510., 425.2, 38E5, 0.193)
-0.0002093529540
chemicals.virial.BVirial_Tsonopoulos_extended(T, Tc, Pc, omega, a=0, b=0, species_type='', dipole=0, order=0)[source]

Calculates the second virial coefficient using the comprehensive model in [1]. See the notes for the calculation of a and b.

BPcRTc=B(0)+ωB(1)+aB(2)+bB(3)\frac{BP_c}{RT_c} = B^{(0)} + \omega B^{(1)} + a B^{(2)} + b B^{(3)}
B(0)=0.14450.33/Tr0.1385/Tr20.0121/Tr3B^{(0)}=0.1445-0.33/T_r-0.1385/T_r^2-0.0121/T_r^3
B(1)=0.0637+0.331/Tr20.423/Tr30.423/Tr30.008/Tr8B^{(1)} = 0.0637+0.331/T_r^2-0.423/T_r^3 -0.423/T_r^3 - 0.008/T_r^8
B(2)=1/Tr6B^{(2)} = 1/T_r^6
B(3)=1/Tr8B^{(3)} = -1/T_r^8
Parameters
Tfloat

Temperature of fluid [K]

Tcfloat

Critical temperature of fluid [K]

Pcfloat

Critical pressure of the fluid [Pa]

omegafloat

Acentric factor for fluid, [-]

afloat, optional

Fit parameter, calculated based on species_type if a is not given and species_type matches on of the supported chemical classes.

bfloat, optional

Fit parameter, calculated based on species_type if a is not given and species_type matches on of the supported chemical classes.

species_typestr, optional

One of .

dipolefloat

dipole moment, optional, [Debye]

orderint, optional

Order of the calculation. 0 for the calculation of B itself; for 1/2/3, the first/second/third derivative of B with respect to temperature; and for -1/-2, the first/second indefinite integral of B with respect to temperature. No other integrals or derivatives are implemented, and an exception will be raised if any other order is given.

Returns
Bfloat

Second virial coefficient in density form or its integral/derivative if specified, [m^3/mol or m^3/mol/K^order]

Notes

Analytical models for derivatives and integrals are available for orders -2, -1, 1, 2, and 3, all obtained with SymPy.

To calculate a or b, the following rules are used:

For ‘simple’ or ‘normal’ fluids:

a=0a = 0
b=0b = 0

For ‘ketone’, ‘aldehyde’, ‘alkyl nitrile’, ‘ether’, ‘carboxylic acid’, or ‘ester’ types of chemicals:

a=2.14×104μr4.308×1021(μr)8a = -2.14\times 10^{-4} \mu_r - 4.308 \times 10^{-21} (\mu_r)^8
b=0b = 0

For ‘alkyl halide’, ‘mercaptan’, ‘sulfide’, or ‘disulfide’ types of chemicals:

a=2.188×104(μr)47.831×1021(μr)8a = -2.188\times 10^{-4} (\mu_r)^4 - 7.831 \times 10^{-21} (\mu_r)^8
b=0b = 0

For ‘alkanol’ types of chemicals (except methanol):

a=0.0878a = 0.0878
b=0.00908+0.0006957μrb = 0.00908 + 0.0006957 \mu_r

For methanol:

a=0.0878a = 0.0878
b=0.0525b = 0.0525

For water:

a=0.0109a = -0.0109
b=0b = 0

If required, the form of dipole moment used in the calculation of some types of a and b values is as follows:

μr=100000μ2(Pc/101325.0)Tc2\mu_r = 100000\frac{\mu^2(Pc/101325.0)}{Tc^2}

For first temperature derivative of B:

dB(0)dT=33Tc100T2+277Tc21000T3+363Tc310000T4+607Tc8125000T9\frac{d B^{(0)}}{dT} = \frac{33 Tc}{100 T^{2}} + \frac{277 Tc^{2}}{1000 T^{3}} + \frac{363 Tc^{3}}{10000 T^{4}} + \frac{607 Tc^{8}}{125000 T^{9}}
dB(1)dT=331Tc2500T3+1269Tc31000T4+8Tc8125T9\frac{d B^{(1)}}{dT} = - \frac{331 Tc^{2}}{500 T^{3}} + \frac{1269 Tc^{3}}{1000 T^{4}} + \frac{8 Tc^{8}}{125 T^{9}}
dB(2)dT=6Tc6T7\frac{d B^{(2)}}{dT} = - \frac{6 Tc^{6}}{T^{7}}
dB(3)dT=8Tc8T9\frac{d B^{(3)}}{dT} = \frac{8 Tc^{8}}{T^{9}}

For the second temperature derivative of B:

d2B(0)dT2=3Tc125000T3(27500+34625TcT+6050Tc2T2+1821Tc7T7)\frac{d^2 B^{(0)}}{dT^2} = - \frac{3 Tc}{125000 T^{3}} \left(27500 + \frac{34625 Tc}{T} + \frac{6050 Tc^{2}}{T^{2}} + \frac{1821 Tc^{7}}{T^{7}}\right)
d2B(1)dT2=3Tc2500T4(331846TcT96Tc6T6)\frac{d^2 B^{(1)}}{dT^2} = \frac{3 Tc^{2}}{500 T^{4}} \left(331 - \frac{846 Tc}{T} - \frac{96 Tc^{6}}{T^{6}}\right)
d2B(2)dT2=42Tc6T8\frac{d^2 B^{(2)}}{dT^2} = \frac{42 Tc^{6}}{T^{8}}
d2B(3)dT2=72Tc8T10\frac{d^2 B^{(3)}}{dT^2} = - \frac{72 Tc^{8}}{T^{10}}

For the third temperature derivative of B:

d3B(0)dT3=3Tc12500T4(8250+13850TcT+3025Tc2T2+1821Tc7T7)\frac{d^3 B^{(0)}}{dT^3} = \frac{3 Tc}{12500 T^{4}} \left(8250 + \frac{13850 Tc}{T} + \frac{3025 Tc^{2}}{T^{2}} + \frac{1821 Tc^{7}}{T^{7}}\right)
d3B(1)dT3=3Tc2250T5(662+2115TcT+480Tc6T6)\frac{d^3 B^{(1)}}{dT^3} = \frac{3 Tc^{2}}{250 T^{5}} \left(-662 + \frac{2115 Tc}{T} + \frac{480 Tc^{6}}{T^{6}}\right)
d3B(2)dT3=336Tc6T9\frac{d^3 B^{(2)}}{dT^3} = - \frac{336 Tc^{6}}{T^{9}}
d3B(3)dT3=720Tc8T11\frac{d^3 B^{(3)}}{dT^3} = \frac{720 Tc^{8}}{T^{11}}

For the first indefinite integral of B:

B(0)dT=289T200033Tc100ln(T)+17000000T7(969500T6Tc2+42350T5Tc3+607Tc8)\int{B^{(0)}} dT = \frac{289 T}{2000} - \frac{33 Tc}{100} \ln{\left (T \right )} + \frac{1}{7000000 T^{7}} \left(969500 T^{6} Tc^{2} + 42350 T^{5} Tc^{3} + 607 Tc^{8}\right)
B(1)dT=637T10000170000T7(23170T6Tc214805T5Tc380Tc8)\int{B^{(1)}} dT = \frac{637 T}{10000} - \frac{1}{70000 T^{7}} \left(23170 T^{6} Tc^{2} - 14805 T^{5} Tc^{3} - 80 Tc^{8}\right)
B(2)dT=Tc65T5\int{B^{(2)}} dT = - \frac{Tc^{6}}{5 T^{5}}
B(3)dT=Tc87T7\int{B^{(3)}} dT = \frac{Tc^{8}}{7 T^{7}}

For the second indefinite integral of B:

B(0)dTdT=289T2400033T100Tcln(T)+33T100Tc+277Tc22000ln(T)142000000T6(254100T5Tc3+607Tc8)\int\int B^{(0)} dT dT = \frac{289 T^{2}}{4000} - \frac{33 T}{100} Tc \ln{\left (T \right )} + \frac{33 T}{100} Tc + \frac{277 Tc^{2}}{2000} \ln{\left (T \right )} - \frac{1}{42000000 T^{6}} \left(254100 T^{5} Tc^{3} + 607 Tc^{8}\right)
B(1)dTdT=637T220000331Tc21000ln(T)1210000T6(44415T5Tc3+40Tc8)\int\int B^{(1)} dT dT = \frac{637 T^{2}}{20000} - \frac{331 Tc^{2}}{1000} \ln{\left (T \right )} - \frac{1}{210000 T^{6}} \left(44415 T^{5} Tc^{3} + 40 Tc^{8}\right)
B(2)dTdT=Tc620T4\int\int B^{(2)} dT dT = \frac{Tc^{6}}{20 T^{4}}
B(3)dTdT=Tc842T6\int\int B^{(3)} dT dT = - \frac{Tc^{8}}{42 T^{6}}

References

1

Tsonopoulos, C., and J. L. Heidman. “From the Virial to the Cubic Equation of State.” Fluid Phase Equilibria 57, no. 3 (1990): 261-76. doi:10.1016/0378-3812(90)85126-U

2

Tsonopoulos, Constantine, and John H. Dymond. “Second Virial Coefficients of Normal Alkanes, Linear 1-Alkanols (and Water), Alkyl Ethers, and Their Mixtures.” Fluid Phase Equilibria, International Workshop on Vapour-Liquid Equilibria and Related Properties in Binary and Ternary Mixtures of Ethers, Alkanes and Alkanols, 133, no. 1-2 (June 1997): 11-34. doi:10.1016/S0378-3812(97)00058-7.

Examples

Example from Perry’s Handbook, 8E, p2-499. Matches to a decimal place.

>>> BVirial_Tsonopoulos_extended(430., 405.65, 11.28E6, 0.252608, a=0, b=0, species_type='ketone', dipole=1.469)
-9.679718337596e-05

New implementations, returning the derivatives as well

chemicals.virial.BVirial_Pitzer_Curl_fast(T, Tc, Pc, omega)[source]

Implementation of BVirial_Pitzer_Curl in the interface which calculates virial coefficients and their derivatives at the same time.

Parameters
Tfloat

Temperature of fluid [K]

Tcfloat

Critical temperature of fluid [K]

Pcfloat

Critical pressure of the fluid [Pa]

omegafloat

Acentric factor for fluid, [-]

Returns
Bfloat

Second virial coefficient in density form [m^3/mol]

dB_dTfloat

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2float

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3float

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

Examples

>>> BVirial_Pitzer_Curl_fast(510., 425.2, 38E5, 0.193)
(-0.000208453624, 1.065377516e-06, -5.7957101e-09, 4.513533043e-11)
chemicals.virial.BVirial_Abbott_fast(T, Tc, Pc, omega)[source]

Implementation of BVirial_Abbott in the interface which calculates virial coefficients and their derivatives at the same time.

Parameters
Tfloat

Temperature of fluid [K]

Tcfloat

Critical temperature of fluid [K]

Pcfloat

Critical pressure of the fluid [Pa]

omegafloat

Acentric factor for fluid, [-]

Returns
Bfloat

Second virial coefficient in density form [m^3/mol]

dB_dTfloat

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2float

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3float

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

Examples

>>> BVirial_Abbott_fast(510., 425.2, 38E5, 0.193)
(-0.0002057018500, 1.039249294e-06, -5.902233639e-09, 4.78222764e-11)
chemicals.virial.BVirial_Tsonopoulos_fast(T, Tc, Pc, omega)[source]

Implementation of BVirial_Tsonopoulos in the interface which calculates virial coefficients and their derivatives at the same time.

Parameters
Tfloat

Temperature of fluid [K]

Tcfloat

Critical temperature of fluid [K]

Pcfloat

Critical pressure of the fluid [Pa]

omegafloat

Acentric factor for fluid, [-]

Returns
Bfloat

Second virial coefficient in density form [m^3/mol]

dB_dTfloat

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2float

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3float

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

Examples

>>> BVirial_Tsonopoulos_fast(510., 425.2, 38E5, 0.193)
(-0.0002093529540, 9.95742355e-07, -5.54234465e-09, 4.57035160e-11)
chemicals.virial.BVirial_Tsonopoulos_extended_fast(T, Tc, Pc, omega, a=0.0, b=0.0)[source]

Implementation of BVirial_Tsonopoulos_extended in the interface which calculates virial coefficients and their derivatives at the same time.

Parameters
Tfloat

Temperature of fluid [K]

Tcfloat

Critical temperature of fluid [K]

Pcfloat

Critical pressure of the fluid [Pa]

omegafloat

Acentric factor for fluid, [-]

afloat, optional

Fit parameter [-]

bfloat, optional

Fit parameter [-]

Returns
Bfloat

Second virial coefficient in density form [m^3/mol]

dB_dTfloat

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2float

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3float

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

Examples

>>> BVirial_Tsonopoulos_extended_fast(510., 425.2, 38E5, 0.193)
(-0.0002093529540, 9.9574235e-07, -5.54234465e-09, 4.5703516e-11)
chemicals.virial.BVirial_Oconnell_Prausnitz(T, Tc, Pc, omega)[source]

Calculates the second virial coefficient using the model in [1].

Br=B(0)+ωB(1)B_r=B^{(0)}+\omega B^{(1)}
B(0)=c0+c1Tr+c2Tr2+c3Tr3B^{(0)}=c0 + \frac{c1}{T_r} + \frac{c2}{T_r^2} + \frac{c3}{T_r^3}
B(1)=d0+d1Tr2+d2Tr3+d3Tr8B^{(1)}=d0 + \frac{d1}{T_r^2} + \frac{d2}{T_r^3} + \frac{d3}{T_r^8}
Parameters
Tfloat

Temperature of fluid [K]

Tcfloat

Critical temperature of fluid [K]

Pcfloat

Critical pressure of the fluid [Pa]

omegafloat

Acentric factor for fluid, [-]

Returns
Bfloat

Second virial coefficient in density form [m^3/mol]

dB_dTfloat

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2float

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3float

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

Notes

The coefficients are as follows:

c0 = 0.1445 c1 = -0.330 c2 = -0.1385 c3 = -0.0121

d0 = 0.073 d1 = 0.46 d2 = -0.50 d3 = -0.097 d4 = -0.0073

References

1

O`Connell, J. P., and J. M. Prausnitz. “Empirical Correlation of Second Virial Coefficients for Vapor-Liquid Equilibrium Calculations.” Industrial & Engineering Chemistry Process Design and Development 6, no. 2 (April 1, 1967): 245-50. https://doi.org/10.1021/i260022a016.

Examples

>>> BVirial_Oconnell_Prausnitz(510., 425.2, 38E5, 0.193)
(-0.000203193781, 1.036185972e-06, -6.53679132e-09, 6.59478287e-11)
chemicals.virial.BVirial_Xiang(T, Tc, Pc, Vc, omega)[source]

Calculates the second virial coefficient using the model in [1].

B=(b0Tr3/4exp(b1Tr3)+b2Tr1/2))VcB = \frac{\left(-b_0T_r^{-3/4}\exp(b_1T_r^{-3}) + b_2T_r^{-1/2}) \right)}V_c
b0=b00+b01ω+b02θb_0 = b_{00} + b_{01}\omega + b_{02}\theta
b1=b10+b11ω+b12θb_1 = b_{10} + b_{11}\omega + b_{12}\theta
b2=b20+b21ω+b22θb_2 = b_{20} + b_{21}\omega + b_{22}\theta
θ=(Zc0.29)2\theta = (Z_c - 0.29)^2
Parameters
Tfloat

Temperature of fluid [K]

Tcfloat

Critical temperature of fluid [K]

Pcfloat

Critical pressure of the fluid [Pa]

Vcfloat

Critical volume of the fluid [m^3/mol]

omegafloat

Acentric factor for fluid, [-]

Returns
Bfloat

Second virial coefficient in density form [m^3/mol]

dB_dTfloat

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2float

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3float

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

References

1

Xiang, H. W. “The New Simple Extended Corresponding-States Principle: Vapor Pressure and Second Virial Coefficient.” Chemical Engineering Science 57, no. 8 (April 2002): 1439049. https://doi.org/10.1016/S0009-2509(02)00017-9.

Examples

>>> BVirial_Xiang(388.26, 647.1, 22050000.0, 5.543076e-05, 0.344)
(-0.0004799570, 4.6778266e-06, -7.0157656e-08, 1.4137862e-09)
chemicals.virial.BVirial_Meng(T, Tc, Pc, Vc, omega, a=0.0)[source]

Calculates the second virial coefficient using the model in [1].

B=RTcPc(f0+ωf1+f2)B = \frac{RT_c}{P_c}\left(f_0 + \omega f_1 + f_2\right)
f0=c0+c1/Tr+c2/Tr2+c3/Tr3+c4/Tr8f_0 = c_0 + c_1/T_r + c_2/T_r^2 + c_3/T_r^3 + c_4/T_r^8
f1=d0+d1/Tr+d2/Tr2+d3/Tr3+d4/Tr8f_1 = d_0 + d_1/T_r + d_2/T_r^2 + d_3/T_r^3 + d_4/T_r^8
f2=aTr6f_2 = \frac{a}{T_r^6}
Parameters
Tfloat

Temperature of fluid [K]

Tcfloat

Critical temperature of fluid [K]

Pcfloat

Critical pressure of the fluid [Pa]

Vcfloat

Critical volume of the fluid [m^3/mol]

omegafloat

Acentric factor for fluid, [-]

afloat

Polar parameter that can be estimated by chemicals.virial.Meng_virial_a

Returns
Bfloat

Second virial coefficient in density form [m^3/mol]

dB_dTfloat

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2float

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3float

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

References

1

Meng, Long, Yuan-Yuan Duan, and Lei Li. “Correlations for Second and Third Virial Coefficients of Pure Fluids.” Fluid Phase Equilibria 226 (December 10, 2004): 109-20. https://doi.org/10.1016/j.fluid.2004.09.023.

Examples

>>> BVirial_Meng(388.26, 647.1, 22050000.0, 5.543076e-05, 0.344)
(-0.00032436028, 2.47004e-06, -3.132e-08, 5.8e-10)
chemicals.virial.Meng_virial_a(Tc, Pc, dipole=0.0, haloalkane=False)[source]

Calculate the a parameter which is used in the Meng B second virial coefficient for polar components. There are two correlations implemented - one for haloalkanes, and another for other polar molecules. If the dipole moment is not provided, a value of 0.0 will be returned.

If the compound is a haloalkane

a=1.1524×106μr2+7.2238×1011μr41.8701×1015μr6a = -1.1524\times 10^{-6}{\mu}_r^2 + 7.2238\times 10^{-11}{\mu}_r^4 - 1.8701\times 10^{-15}{\mu}_r^6

Otherwise

a=3.0309×106μr2+9.503×1011μr41.2469×1015μr6a = -3.0309\times 10^{-6}{\mu}_r^2 + 9.503\times 10^{-11}{\mu}_r^4 - 1.2469\times 10^{-15}{\mu}_r^6
Parameters
Tcfloat

Critical temperature, [K]

Pcfloat

Critical pressure, [Pa]

dipolefloat

Dipole moment, [debye]

haloalkanebool

Whether or not the compound is a haloalkane, [-]

Returns
afloat

Coefficient [-]

References

1

Meng, Long, Yuan-Yuan Duan, and Lei Li. “Correlations for Second and Third Virial Coefficients of Pure Fluids.” Fluid Phase Equilibria 226 (December 10, 2004): 109-20. https://doi.org/10.1016/j.fluid.2004.09.023.

Examples

Ethanol

>>> Meng_virial_a(514.0, 6137000.0, 1.44, haloalkane=False)
-0.00637841

R-41 Fluoromethane

>>> Meng_virial_a(317.4, 5870000.0, 1.85, haloalkane=True)
-0.04493829

Third Virial Correlations

chemicals.virial.CVirial_Orbey_Vera(T, Tc, Pc, omega)[source]

Calculates the third virial coefficient using the model in [1].

C=(RTc/Pc)2(fCTr(0)+ωfCTr(1))C = (RT_c/P_c)^2 (fC_{Tr}^{(0)} + \omega fC_{Tr}^{(1)})
fCTr(0)=0.01407+0.02432Tr2.80.00313Tr10.5fC_{Tr}^{(0)} = 0.01407 + 0.02432T_r^{-2.8} - 0.00313T_r^{-10.5}
fCTr(1)=0.02676+0.01770Tr2.8+0.040Tr30.003Tr60.00228Tr10.5fC_{Tr}^{(1)} = -0.02676 + 0.01770T_r^{-2.8} + 0.040T_r^{-3} - 0.003T_r^{-6} - 0.00228T_r^{-10.5}
Parameters
Tfloat

Temperature of fluid [K]

Tcfloat

Critical temperature of fluid [K]

Pcfloat

Critical pressure of the fluid [Pa]

omegafloat

Acentric factor for fluid, [-]

Returns
Cfloat

Third virial coefficient in density form [m^6/mol^2]

dC_dTfloat

First temperature derivative of third virial coefficient in density form [m^6/mol^2/K]

d2C_dT2float

Second temperature derivative of third virial coefficient in density form [m^6/mol^2/K^2]

d3C_dT3float

Third temperature derivative of third virial coefficient in density form [m^6/mol^2/K^3]

References

1

Orbey, Hasan, and J. H. Vera. “Correlation for the Third Virial Coefficient Using Tc, Pc and ω as Parameters.” AIChE Journal 29, no. 1 (January 1, 1983): 107-13. https://doi.org/10.1002/aic.690290115.

Examples

n-octane

>>> CVirial_Orbey_Vera(T=300, Tc=568.7, Pc=2490000.0, omega=0.394)
(-1.1107124e-05, 4.1326808e-07, -1.6041435e-08, 6.7035158e-10)
chemicals.virial.CVirial_Liu_Xiang(T, Tc, Pc, Vc, omega)[source]

Calculates the third virial coefficient using the model in [1].

C=Vc2(fTr(0)+ωfTr(1)+θfTr(2))C = V_c^2 (f_{T_r}^{(0)} + \omega f_{T_r}^{(1)} + \theta f_{T_r}^{(2)})
fTr(0)=a00+a10Tr3+a20Tr6+a30Tr11f_{T_r}^{(0)} = a_{00} + a_{10}T_r^{-3} + a_{20}T_r^{-6} + a_{30}T_r^{-11}
fTr(1)=a01+a11Tr3+a21Tr6+a31Tr11f_{T_r}^{(1)} = a_{01} + a_{11}T_r^{-3} + a_{21}T_r^{-6} + a_{31}T_r^{-11}
fTr(2)=a02+a12Tr3+a22Tr6+a32Tr11f_{T_r}^{(2)} = a_{02} + a_{12}T_r^{-3} + a_{22}T_r^{-6} + a_{32}T_r^{-11}
θ=(Zc0.29)2\theta = (Z_c - 0.29)^2
Parameters
Tfloat

Temperature of fluid [K]

Tcfloat

Critical temperature of fluid [K]

Pcfloat

Critical pressure of the fluid [Pa]

Vcfloat

Critical volume of the fluid [m^3/mol]

omegafloat

Acentric factor for fluid, [-]

Returns
Cfloat

Third virial coefficient in density form [m^6/mol^2]

dC_dTfloat

First temperature derivative of third virial coefficient in density form [m^6/mol^2/K]

d2C_dT2float

Second temperature derivative of third virial coefficient in density form [m^6/mol^2/K^2]

d3C_dT3float

Third temperature derivative of third virial coefficient in density form [m^6/mol^2/K^3]

References

1

Liu, D. X., and H. W. Xiang. “Corresponding-States Correlation and Prediction of Third Virial Coefficients for a Wide Range of Substances.” International Journal of Thermophysics 24, no. 6 (November 1, 2003): 1667-80. https://doi.org/10.1023/B:IJOT.0000004098.98614.38.

Examples

Water at Tr = 0.6

>>> CVirial_Liu_Xiang(388.26, 647.1, 22050000.0, 5.543076923076923e-05, 0.344)
(-1.4779977e-07, 4.9949901e-09, -1.652899e-10, 5.720067e-12)

Cross-Parameters

chemicals.virial.Tarakad_Danner_virial_CSP_kijs(Vcs)[source]

Calculates a binary interaction parameter for the calculation of Bij binary virial coefficient as shown in [1] and [2].

This equation for kij is:

kij=18vcivcj(Vci1/3+Vci1/3)3k_{ij} = 1 - \frac{8\sqrt{v_{ci}v_{cj}}}{(V_{ci}^{1/3} +V_{ci}^{1/3})^3}

The equation this kij is used in is

Tcij=TciTcj(1kij)T_{cij} = \sqrt{T_{ci}T_{cj}}(1-k_{ij})
Parameters
Vcslist[float]

Critical volumes for each species, [m^3/mol]

Returns
kijslist[list[float]]

Binary interaction parameters, [-]

References

1

Tarakad, Ramanathan R., and Ronald P. Danner. “An Improved Corresponding States Method for Polar Fluids: Correlation of Second Virial Coefficients.” AIChE Journal 23, no. 5 (1977): 685-95. https://doi.org/10.1002/aic.690230510.

2

Meng, Long, and Yuan-Yuan Duan. “Prediction of the Second Cross Virial Coefficients of Nonpolar Binary Mixtures.” Fluid Phase Equilibria 238 (December 1, 2005): 229-38. https://doi.org/10.1016/j.fluid.2005.10.007.

Examples

>>> Tarakad_Danner_virial_CSP_kijs(Vcs=[0.000168, 0.000316])
[[0.0, 0.01646332091], [0.0164633209, 0.0]]
chemicals.virial.Tarakad_Danner_virial_CSP_Tcijs(Tcs, kijs)[source]

Calculates the corresponding states critical temperature for the calculation of Bij binary virial coefficient as shown in [1] and [2].

Tcij=TciTcj(1kij)T_{cij} = \sqrt{T_{ci}T_{cj}}(1-k_{ij})
Parameters
Tcslist[float]

Critical temperatures for each species, [K]

kijslist[list[float]]

Binary interaction parameters, [-]

Returns
Tcijslist[list[float]]

CSP Critical temperatures for each pair of species, [K]

References

1

Tarakad, Ramanathan R., and Ronald P. Danner. “An Improved Corresponding States Method for Polar Fluids: Correlation of Second Virial Coefficients.” AIChE Journal 23, no. 5 (1977): 685-95. https://doi.org/10.1002/aic.690230510.

2

Meng, Long, and Yuan-Yuan Duan. “Prediction of the Second Cross Virial Coefficients of Nonpolar Binary Mixtures.” Fluid Phase Equilibria 238 (December 1, 2005): 229-38. https://doi.org/10.1016/j.fluid.2005.10.007.

Examples

>>> kijs = Tarakad_Danner_virial_CSP_kijs(Vcs=[0.000168, 0.000316])
>>> Tarakad_Danner_virial_CSP_Tcijs(Tcs=[514.0, 591.75], kijs=kijs)
[[514.0, 542.42694], [542.42694, 591.75000]]
chemicals.virial.Tarakad_Danner_virial_CSP_Pcijs(Tcs, Pcs, Vcs, Tcijs)[source]

Calculates the corresponding states critical pressure for the calculation of Bij binary virial coefficient as shown in [1] and [2].

Pcij=4Tcij(PciVciTci+PcjVcjTcj)(Vci1/3+Vci1/3)3P_{cij} = \frac{4T_{cij} \left( \frac{P_{ci}V_{ci}}{T_{ci}} + \frac{P_{cj}V_{cj}}{T_{cj}} \right) }{(V_{ci}^{1/3} +V_{ci}^{1/3})^3}
Parameters
Tcslist[float]

Critical temperatures for each species, [K]

Pcslist[float]

Critical pressures for each species, [Pa]

Vcslist[float]

Critical volumes for each species, [m^3/mol]

Tcijslist[list[float]]

CSP Critical temperatures for each pair of species, [K]

Returns
Pcijslist[list[float]]

CSP Critical pressures for each pair of species, [Pa]

References

1

Tarakad, Ramanathan R., and Ronald P. Danner. “An Improved Corresponding States Method for Polar Fluids: Correlation of Second Virial Coefficients.” AIChE Journal 23, no. 5 (1977): 685-95. https://doi.org/10.1002/aic.690230510.

2

Meng, Long, and Yuan-Yuan Duan. “Prediction of the Second Cross Virial Coefficients of Nonpolar Binary Mixtures.” Fluid Phase Equilibria 238 (December 1, 2005): 229-38. https://doi.org/10.1016/j.fluid.2005.10.007.

Examples

>>> kijs = Tarakad_Danner_virial_CSP_kijs(Vcs=[0.000168, 0.000316])
>>> Tcijs = Tarakad_Danner_virial_CSP_Tcijs(Tcs=[514.0, 591.75], kijs=kijs)
>>> Tarakad_Danner_virial_CSP_Pcijs(Tcs=[514.0, 591.75], Pcs=[6137000.0, 4108000.0], Vcs=[0.000168, 0.000316], Tcijs=Tcijs)
[[6136999.9, 4861936.4], [4861936.4, 4107999.9]]
chemicals.virial.Tarakad_Danner_virial_CSP_omegaijs(omegas)[source]

Calculates the corresponding states acentric factor for the calculation of Bij binary virial coefficient as shown in [1] and [2].

ωij=0.5(ωi+ωj)\omega_{ij} = 0.5(\omega_i + \omega_j)
Parameters
omegaslist[float]

Acentric factor for each species, [-]

Returns
omegaijslist[list[float]]

CSP acentric factors for each pair of species, [-]

References

1

Tarakad, Ramanathan R., and Ronald P. Danner. “An Improved Corresponding States Method for Polar Fluids: Correlation of Second Virial Coefficients.” AIChE Journal 23, no. 5 (1977): 685-95. https://doi.org/10.1002/aic.690230510.

2

Meng, Long, and Yuan-Yuan Duan. “Prediction of the Second Cross Virial Coefficients of Nonpolar Binary Mixtures.” Fluid Phase Equilibria 238 (December 1, 2005): 229-38. https://doi.org/10.1016/j.fluid.2005.10.007.

Examples

>>> Tarakad_Danner_virial_CSP_omegaijs([0.635, 0.257])
[[0.635, 0.446], [0.446, 0.257]]
chemicals.virial.Lee_Kesler_virial_CSP_Vcijs(Vcs)[source]

Calculates the corresponding states critical volumes for the calculation of Vcijs binary virial coefficient as shown in [1] and [2].

Vcij=18(Vc,i1/3+Vc,j1/3)3V_{cij} = \frac{1}{8}\left(V_{c,i}^{1/3} + V_{c,j}^{1/3} \right)^3
Parameters
Vcslist[float]

Critical volume of the fluids [m^3/mol]

Returns
Vcijslist[list[float]]

CSP critical volumes for each pair of species, [m^3/mol]

Notes

[1] cites this as Lee-Kesler rules.

References

1(1,2)

Estela-Uribe, J. F., and J. Jaramillo. “Generalised Virial Equation of State for Natural Gas Systems.” Fluid Phase Equilibria 231, no. 1 (April 1, 2005): 84-98. https://doi.org/10.1016/j.fluid.2005.01.005.

2

Lee, Byung Ik, and Michael G. Kesler. “A Generalized Thermodynamic Correlation Based on Three-Parameter Corresponding States.” AIChE Journal 21, no. 3 (1975): 510-27. https://doi.org/10.1002/aic.690210313.

Examples

>>> Lee_Kesler_virial_CSP_Vcijs(Vcs=[0.000168, 0.000316])
[[0.000168, 0.00023426], [0.000234265, 0.000316]]
chemicals.virial.Meng_Duan_2005_virial_CSP_kijs(CASs, atomss)[source]

Calculates a binary interaction parameter for the calculation of Bij binary virial coefficient as shown in [1]. This implements a correlation of alkane-alkane, CO2-alkane, and N2-alkane.

The equation this kij is used in is

Tcij=TciTcj(1kij)T_{cij} = \sqrt{T_{ci}T_{cj}}(1-k_{ij})
Parameters
CASslist[str]

CAS registration numbers for each component, [-]

atomsslist[dict]

Breakdown of each component into its elements and their counts, as a dict, [-]

Returns
kijslist[list[float]]

Binary interaction parameters, [-]

References

1

Meng, Long, and Yuan-Yuan Duan. “Prediction of the Second Cross Virial Coefficients of Nonpolar Binary Mixtures.” Fluid Phase Equilibria 238 (December 1, 2005): 229-38. https://doi.org/10.1016/j.fluid.2005.10.007.

Examples

>>> CASs = ['74-82-8', '74-84-0', '124-38-9', '7727-37-9', '7439-89-6']
>>> atomss = [{'C': 1, 'H': 4}, {'C': 2, 'H': 6}, {'C': 1, 'O': 2}, {'N': 2}, {'Fe': 1}]
>>> kijs = Meng_Duan_2005_virial_CSP_kijs(CASs=CASs, atomss=atomss)

Second Virial Correlations Dense Implementations

chemicals.virial.BVirial_Xiang_vec(T, Tcs, Pcs, Vcs, omegas, Bs=None, dB_dTs=None, d2B_dT2s=None, d3B_dT3s=None)[source]

Perform a vectorized calculation of the Xiang B virial coefficient model and its first three temperature derivatives.

Parameters
Tfloat

Temperature of fluid [K]

Tcslist[float]

Critical temperature of fluids [K]

Pcslist[float]

Critical pressure of the fluids [Pa]

Vcslist[float]

Critical volume of the fluids [m^3/mol]

omegaslist[float]

Acentric factor for fluids, [-]

Bslist[float], optional

Second virial coefficient in density form [m^3/mol]

dB_dTslist[float], optional

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[float], optional

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[float], optional

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

Returns
Bslist[float]

Second virial coefficient in density form [m^3/mol]

dB_dTslist[float]

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[float]

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[float]

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

chemicals.virial.BVirial_Xiang_mat(T, Tcs, Pcs, Vcs, omegas, Bs=None, dB_dTs=None, d2B_dT2s=None, d3B_dT3s=None)[source]

Perform a matrix calculation of the Xiang B virial coefficient model and its first three temperature derivatives.

Parameters
Tfloat

Temperature of fluid [K]

Tcslist[list[float]]

Critical temperature of fluids [K]

Pcslist[list[float]]

Critical pressure of the fluids [Pa]

Vcslist[list[float]]

Critical volume of the fluids [m^3/mol]

omegaslist[list[float]]

Acentric factor for fluids, [-]

Bslist[list[float]], optional

Second virial coefficient in density form [m^3/mol]

dB_dTslist[list[float]], optional

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[list[float]], optional

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[list[float]], optional

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

Returns
Bslist[list[float]]

Second virial coefficient in density form [m^3/mol]

dB_dTslist[list[float]]

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[list[float]]

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[list[float]]

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

chemicals.virial.BVirial_Pitzer_Curl_vec(T, Tcs, Pcs, omegas, Bs=None, dB_dTs=None, d2B_dT2s=None, d3B_dT3s=None)[source]

Perform a vectorized calculation of the Pitzer-Curl B virial coefficient model and its first three temperature derivatives.

Parameters
Tfloat

Temperature of fluid [K]

Tcslist[float]

Critical temperature of fluids [K]

Pcslist[float]

Critical pressure of the fluids [Pa]

omegaslist[float]

Acentric factor for fluids, [-]

Bslist[float], optional

Second virial coefficient in density form [m^3/mol]

dB_dTslist[float], optional

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[float], optional

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[float], optional

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

Returns
Bslist[float]

Second virial coefficient in density form [m^3/mol]

dB_dTslist[float]

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[float]

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[float]

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

chemicals.virial.BVirial_Pitzer_Curl_mat(T, Tcs, Pcs, omegas, Bs=None, dB_dTs=None, d2B_dT2s=None, d3B_dT3s=None)[source]

Perform a matrix calculation of the Pitzer-Curl B virial coefficient model and its first three temperature derivatives.

Parameters
Tfloat

Temperature of fluid [K]

Tcslist[list[float]]

Critical temperature of fluids [K]

Pcslist[list[float]]

Critical pressure of the fluids [Pa]

omegaslist[list[float]]

Acentric factor for fluids, [-]

Bslist[list[float]], optional

Second virial coefficient in density form [m^3/mol]

dB_dTslist[list[float]], optional

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[list[float]], optional

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[list[float]], optional

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

Returns
Bslist[list[float]]

Second virial coefficient in density form [m^3/mol]

dB_dTslist[list[float]]

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[list[float]]

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[list[float]]

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

chemicals.virial.BVirial_Abbott_vec(T, Tcs, Pcs, omegas, Bs=None, dB_dTs=None, d2B_dT2s=None, d3B_dT3s=None)[source]

Perform a vectorized calculation of the Abbott B virial coefficient model and its first three temperature derivatives.

Parameters
Tfloat

Temperature of fluid [K]

Tcslist[float]

Critical temperature of fluids [K]

Pcslist[float]

Critical pressure of the fluids [Pa]

omegaslist[float]

Acentric factor for fluids, [-]

Bslist[float], optional

Second virial coefficient in density form [m^3/mol]

dB_dTslist[float], optional

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[float], optional

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[float], optional

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

Returns
Bslist[float]

Second virial coefficient in density form [m^3/mol]

dB_dTslist[float]

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[float]

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[float]

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

chemicals.virial.BVirial_Abbott_mat(T, Tcs, Pcs, omegas, Bs=None, dB_dTs=None, d2B_dT2s=None, d3B_dT3s=None)[source]

Perform a matrix calculation of the Abbott B virial coefficient model and its first three temperature derivatives.

Parameters
Tfloat

Temperature of fluid [K]

Tcslist[list[float]]

Critical temperature of fluids [K]

Pcslist[list[float]]

Critical pressure of the fluids [Pa]

omegaslist[list[float]]

Acentric factor for fluids, [-]

Bslist[list[float]], optional

Second virial coefficient in density form [m^3/mol]

dB_dTslist[list[float]], optional

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[list[float]], optional

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[list[float]], optional

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

Returns
Bslist[list[float]]

Second virial coefficient in density form [m^3/mol]

dB_dTslist[list[float]]

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[list[float]]

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[list[float]]

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

chemicals.virial.BVirial_Tsonopoulos_vec(T, Tcs, Pcs, omegas, Bs=None, dB_dTs=None, d2B_dT2s=None, d3B_dT3s=None)[source]

Perform a vectorized calculation of the Tsonopoulos B virial coefficient model and its first three temperature derivatives.

Parameters
Tfloat

Temperature of fluid [K]

Tcslist[float]

Critical temperature of fluids [K]

Pcslist[float]

Critical pressure of the fluids [Pa]

omegaslist[float]

Acentric factor for fluids, [-]

Bslist[float], optional

Second virial coefficient in density form [m^3/mol]

dB_dTslist[float], optional

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[float], optional

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[float], optional

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

Returns
Bslist[float]

Second virial coefficient in density form [m^3/mol]

dB_dTslist[float]

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[float]

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[float]

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

chemicals.virial.BVirial_Tsonopoulos_mat(T, Tcs, Pcs, omegas, Bs=None, dB_dTs=None, d2B_dT2s=None, d3B_dT3s=None)[source]

Perform a matrix calculation of the Tsonopoulos B virial coefficient model and its first three temperature derivatives.

Parameters
Tfloat

Temperature of fluid [K]

Tcslist[list[float]]

Critical temperature of fluids [K]

Pcslist[list[float]]

Critical pressure of the fluids [Pa]

omegaslist[list[float]]

Acentric factor for fluids, [-]

Bslist[list[float]], optional

Second virial coefficient in density form [m^3/mol]

dB_dTslist[list[float]], optional

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[list[float]], optional

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[list[float]], optional

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

Returns
Bslist[list[float]]

Second virial coefficient in density form [m^3/mol]

dB_dTslist[list[float]]

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[list[float]]

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[list[float]]

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

chemicals.virial.BVirial_Meng_vec(T, Tcs, Pcs, Vcs, omegas, ais, Bs=None, dB_dTs=None, d2B_dT2s=None, d3B_dT3s=None)[source]

Perform a vectorized calculation of the Meng B virial coefficient model and its first three temperature derivatives.

Parameters
Tfloat

Temperature of fluid [K]

Tcslist[float]

Critical temperature of fluids [K]

Pcslist[float]

Critical pressure of the fluids [Pa]

Vcslist[float]

Critical volume of the fluids [m^3/mol]

omegaslist[float]

Acentric factor for fluids, [-]

aislist[float]

Polar parameters that can be estimated by chemicals.virial.Meng_virial_a

Bslist[float], optional

Second virial coefficient in density form [m^3/mol]

dB_dTslist[float], optional

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[float], optional

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[float], optional

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

Returns
Bslist[float]

Second virial coefficient in density form [m^3/mol]

dB_dTslist[float]

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[float]

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[float]

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

chemicals.virial.BVirial_Meng_mat(T, Tcs, Pcs, Vcs, omegas, ais, Bs=None, dB_dTs=None, d2B_dT2s=None, d3B_dT3s=None)[source]

Perform a matrix calculation of the Meng B virial coefficient model and its first three temperature derivatives.

Parameters
Tfloat

Temperature of fluid [K]

Tcslist[list[float]]

Critical temperature of fluids [K]

Pcslist[list[float]]

Critical pressure of the fluids [Pa]

Vcslist[list[float]]

Critical volume of the fluids [m^3/mol]

omegaslist[list[float]]

Acentric factor for fluids, [-]

aislist[float]

Polar parameters that can be estimated as the average of the pure component values predicted by chemicals.virial.Meng_virial_a

Bslist[list[float]], optional

Second virial coefficient in density form [m^3/mol]

dB_dTslist[list[float]], optional

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[list[float]], optional

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[list[float]], optional

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

Returns
Bslist[list[float]]

Second virial coefficient in density form [m^3/mol]

dB_dTslist[list[float]]

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[list[float]]

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[list[float]]

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

chemicals.virial.BVirial_Oconnell_Prausnitz_vec(T, Tcs, Pcs, omegas, Bs=None, dB_dTs=None, d2B_dT2s=None, d3B_dT3s=None)[source]

Perform a vectorized calculation of the O’connell Prausnitz B virial coefficient model and its first three temperature derivatives.

Parameters
Tfloat

Temperature of fluid [K]

Tcslist[float]

Critical temperature of fluids [K]

Pcslist[float]

Critical pressure of the fluids [Pa]

omegaslist[float]

Acentric factor for fluids, [-]

Bslist[float], optional

Second virial coefficient in density form [m^3/mol]

dB_dTslist[float], optional

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[float], optional

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[float], optional

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

Returns
Bslist[float]

Second virial coefficient in density form [m^3/mol]

dB_dTslist[float]

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[float]

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[float]

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

chemicals.virial.BVirial_Oconnell_Prausnitz_mat(T, Tcs, Pcs, omegas, Bs=None, dB_dTs=None, d2B_dT2s=None, d3B_dT3s=None)[source]

Perform a matrix calculation of the Oconnell_Prausnitz B virial coefficient model and its first three temperature derivatives.

Parameters
Tfloat

Temperature of fluid [K]

Tcslist[list[float]]

Critical temperature of fluids [K]

Pcslist[list[float]]

Critical pressure of the fluids [Pa]

omegaslist[list[float]]

Acentric factor for fluids, [-]

Bslist[list[float]], optional

Second virial coefficient in density form [m^3/mol]

dB_dTslist[list[float]], optional

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[list[float]], optional

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[list[float]], optional

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

Returns
Bslist[list[float]]

Second virial coefficient in density form [m^3/mol]

dB_dTslist[list[float]]

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[list[float]]

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[list[float]]

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

chemicals.virial.BVirial_Tsonopoulos_extended_vec(T, Tcs, Pcs, omegas, ais, bs, Bs=None, dB_dTs=None, d2B_dT2s=None, d3B_dT3s=None)[source]

Perform a vectorized calculation of the Tsonopoulos (extended) B virial coefficient model and its first three temperature derivatives.

Parameters
Tfloat

Temperature of fluid [K]

Tcslist[float]

Critical temperature of fluids [K]

Pcslist[float]

Critical pressure of the fluids [Pa]

omegaslist[float]

Acentric factor for fluids, [-]

aislist[float]

Fit parameters, [-]

bslist[float]

Fit parameters, [-]

Bslist[float], optional

Second virial coefficient in density form [m^3/mol]

dB_dTslist[float], optional

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[float], optional

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[float], optional

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

Returns
Bslist[float]

Second virial coefficient in density form [m^3/mol]

dB_dTslist[float]

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[float]

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[float]

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

chemicals.virial.BVirial_Tsonopoulos_extended_mat(T, Tcs, Pcs, omegas, ais, bs, Bs=None, dB_dTs=None, d2B_dT2s=None, d3B_dT3s=None)[source]

Perform a matrix calculation of the Tsonopoulos (extended) B virial coefficient model and its first three temperature derivatives.

Parameters
Tfloat

Temperature of fluid [K]

Tcslist[list[float]]

Critical temperature of fluids [K]

Pcslist[list[float]]

Critical pressure of the fluids [Pa]

omegaslist[list[float]]

Acentric factor for fluids, [-]

aislist[list[float]]

Fit parameters, [-]

bslist[list[float]]

Fit parameters, [-]

Bslist[list[float]], optional

Second virial coefficient in density form [m^3/mol]

dB_dTslist[list[float]], optional

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[list[float]], optional

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[list[float]], optional

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

Returns
Bslist[list[float]]

Second virial coefficient in density form [m^3/mol]

dB_dTslist[list[float]]

First temperature derivative of second virial coefficient in density form [m^3/mol/K]

d2B_dT2slist[list[float]]

Second temperature derivative of second virial coefficient in density form [m^3/mol/K^2]

d3B_dT3slist[list[float]]

Third temperature derivative of second virial coefficient in density form [m^3/mol/K^3]

Third Virial Correlations Dense Implementations

chemicals.virial.CVirial_Liu_Xiang_vec(T, Tcs, Pcs, Vcs, omegas, Cs=None, dC_dTs=None, d2C_dT2s=None, d3C_dT3s=None)[source]

Perform a vectorized calculation of the Xiang C virial coefficient model and its first three temperature derivatives.

Parameters
Tfloat

Temperature of fluid [K]

Tcslist[float]

Critical temperature of fluids [K]

Pcslist[float]

Critical pressure of the fluids [Pa]

Vcslist[float]

Critical volume of the fluids [m^3/mol]

omegaslist[float]

Acentric factor for fluids, [-]

Cslist[float], optional

Third virial coefficient in density form [m^6/mol^2]

dC_dTslist[float], optional

First temperature derivative of third virial coefficient in density form [m^6/mol^2/K]

d2C_dT2slist[float], optional

Second temperature derivative of third virial coefficient in density form [m^6/mol^2/K^2]

d3C_dT3slist[float], optional

Third temperature derivative of third virial coefficient in density form [m^6/mol^2/K^3]

Returns
Cslist[float]

Third virial coefficient in density form [m^6/mol^2]

dC_dTslist[float]

First temperature derivative of third virial coefficient in density form [m^6/mol^2/K]

d2C_dT2slist[float]

Second temperature derivative of third virial coefficient in density form [m^6/mol^2/K^2]

d3C_dT3slist[float]

Third temperature derivative of third virial coefficient in density form [m^6/mol^2/K^3]

chemicals.virial.CVirial_Orbey_Vera_vec(T, Tcs, Pcs, omegas, Cs=None, dC_dTs=None, d2C_dT2s=None, d3C_dT3s=None)[source]

Perform a vectorized calculation of the Orbey-Vera C virial coefficient model and its first three temperature derivatives.

Parameters
Tfloat

Temperature of fluid [K]

Tcslist[float]

Critical temperature of fluids [K]

Pcslist[float]

Critical pressure of the fluids [Pa]

omegaslist[float]

Acentric factor for fluids, [-]

Cslist[float], optional

Third virial coefficient in density form [m^6/mol^2]

dC_dTslist[float], optional

First temperature derivative of third virial coefficient in density form [m^6/mol^2/K]

d2C_dT2slist[float], optional

Second temperature derivative of third virial coefficient in density form [m^6/mol^2/K^2]

d3C_dT3slist[float], optional

Third temperature derivative of third virial coefficient in density form [m^6/mol^2/K^3]

Returns
Cslist[float]

Third virial coefficient in density form [m^6/mol^2]

dC_dTslist[float]

First temperature derivative of third virial coefficient in density form [m^6/mol^2/K]

d2C_dT2slist[float]

Second temperature derivative of third virial coefficient in density form [m^6/mol^2/K^2]

d3C_dT3slist[float]

Third temperature derivative of third virial coefficient in density form [m^6/mol^2/K^3]

chemicals.virial.CVirial_Liu_Xiang_mat(T, Tcs, Pcs, Vcs, omegas, Cs=None, dC_dTs=None, d2C_dT2s=None, d3C_dT3s=None)[source]

Perform a matrix calculation of the Xiang C virial coefficient model and its first three temperature derivatives.

Parameters
Tfloat

Temperature of fluid [K]

Tcslist[list[float]]

Critical temperature of fluids [K]

Pcslist[list[float]]

Critical pressure of the fluids [Pa]

Vcslist[list[float]]

Critical volume of the fluids [m^3/mol]

omegaslist[list[float]]

Acentric factor for fluids, [-]

Cslist[list[float]], optional

Third virial coefficient in density form [m^6/mol^2]

dC_dTslist[list[float]], optional

First temperature derivative of third virial coefficient in density form [m^6/mol^2/K]

d2C_dT2slist[list[float]], optional

Second temperature derivative of third virial coefficient in density form [m^6/mol^2/K^2]

d3C_dT3slist[list[float]], optional

Third temperature derivative of third virial coefficient in density form [m^6/mol^2/K^3]

Returns
Cslist[list[float]]

Third virial coefficient in density form [m^6/mol^2]

dC_dTslist[list[float]]

First temperature derivative of third virial coefficient in density form [m^6/mol^2/K]

d2C_dT2slist[list[float]]

Second temperature derivative of third virial coefficient in density form [m^6/mol^2/K^2]

d3C_dT3slist[list[float]]

Third temperature derivative of third virial coefficient in density form [m^6/mol^2/K^3]

chemicals.virial.CVirial_Orbey_Vera_mat(T, Tcs, Pcs, omegas, Cs=None, dC_dTs=None, d2C_dT2s=None, d3C_dT3s=None)[source]

Perform a matrix calculation of the Orbey-Vera C virial coefficient model and its first three temperature derivatives.

Parameters
Tfloat

Temperature of fluid [K]

Tcslist[list[float]]

Critical temperature of fluids [K]

Pcslist[list[float]]

Critical pressure of the fluids [Pa]

omegaslist[list[float]]

Acentric factor for fluids, [-]

Cslist[list[float]], optional

Third virial coefficient in density form [m^6/mol^2]

dC_dTslist[list[float]], optional

First temperature derivative of third virial coefficient in density form [m^6/mol^2/K]

d2C_dT2slist[list[float]], optional

Second temperature derivative of third virial coefficient in density form [m^6/mol^2/K^2]

d3C_dT3slist[list[float]], optional

Third temperature derivative of third virial coefficient in density form [m^6/mol^2/K^3]

Returns
Cslist[list[float]]

Third virial coefficient in density form [m^6/mol^2]

dC_dTslist[list[float]]

First temperature derivative of third virial coefficient in density form [m^6/mol^2/K]

d2C_dT2slist[list[float]]

Second temperature derivative of third virial coefficient in density form [m^6/mol^2/K^2]

d3C_dT3slist[list[float]]

Third temperature derivative of third virial coefficient in density form [m^6/mol^2/K^3]