Density/Volume (thermo.volume)

This module contains implementations of TDependentProperty representing liquid, vapor, and solid volume. A variety of estimation and data methods are available as included in the chemicals library. Additionally liquid, vapor, and solid mixture volume predictor objects are implemented subclassing MixtureProperty.

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

Pure Liquid Volume

class thermo.volume.VolumeLiquid(MW=None, Tb=None, Tc=None, Pc=None, Vc=None, Zc=None, omega=None, dipole=None, Psat=None, CASRN='', eos=None, has_hydroxyl=None, extrapolation='constant', **kwargs)[source]

Bases: thermo.utils.tp_dependent_property.TPDependentProperty

Class for dealing with liquid molar volume as a function of temperature and pressure.

For low-pressure (at 1 atm while under the vapor pressure; along the saturation line otherwise) liquids, there are six coefficient-based methods from five data sources, one source of tabular information, one source of constant values, eight corresponding-states estimators, the external library CoolProp and the equation of state.

For high-pressure liquids (also, <1 atm liquids), there is one corresponding-states estimator, and the external library CoolProp.

Parameters
CASRNstr, optional

The CAS number of the chemical

MWfloat, optional

Molecular weight, [g/mol]

Tbfloat, optional

Boiling point, [K]

Tcfloat, optional

Critical temperature, [K]

Pcfloat, optional

Critical pressure, [Pa]

Vcfloat, optional

Critical volume, [m^3/mol]

Zcfloat, optional

Critical compressibility

omegafloat, optional

Acentric factor, [-]

dipolefloat, optional

Dipole, [debye]

Psatfloat or callable, optional

Vapor pressure at a given temperature, or callable for the same [Pa]

eosobject, optional

Equation of State object after thermo.eos.GCEOS

load_databool, optional

If False, do not load property coefficients from data sources in files [-]

extrapolationstr or None

None to not extrapolate; see TDependentProperty for a full list of all options, [-]

methodstr or None, optional

If specified, use this method by default and do not use the ranked sorting; an exception is raised if this is not a valid method for the provided inputs, [-]

Notes

A string holding each method’s name is assigned to the following variables in this module, intended as the most convenient way to refer to a method. To iterate over all methods, use the lists stored in volume_liquid_methods and volume_liquid_methods_P for low and high pressure methods respectively.

Low pressure methods:

DIPPR_PERRY_8E:

A simple polynomial as expressed in [1], with data available for 344 fluids. Temperature limits are available for all fluids. Believed very accurate.

VDI_PPDS:

Coefficients for a equation form developed by the PPDS (EQ116 in terms of mass density), published openly in [3]. Valid up to the critical temperature, and extrapolates to very low temperatures well.

MMSNM0FIT:

Uses a fit coefficient for better accuracy in the SNM0 method, Coefficients available for 73 fluids from [2]. Valid to the critical point.

HTCOSTALDFIT:

A method with two fit coefficients to the COSTALD method. Coefficients available for 192 fluids, from [3]. Valid to the critical point.

RACKETTFIT:

The Rackett method, with a fit coefficient Z_RA. Data is available for 186 fluids, from [3]. Valid to the critical point.

CRC_INORG_L:

Single-temperature coefficient linear model in terms of mass density for the density of inorganic liquids; converted to molar units internally. Data is available for 177 fluids normally valid over a narrow range above the melting point, from [4]; described in CRC_inorganic.

MMSNM0:

CSP method, described in SNM0.

HTCOSTALD:

CSP method, described in COSTALD.

YEN_WOODS_SAT:

CSP method, described in Yen_Woods_saturation.

RACKETT:

CSP method, described in Rackett.

YAMADA_GUNN:

CSP method, described in Yamada_Gunn.

BHIRUD_NORMAL:

CSP method, described in Bhirud_normal.

TOWNSEND_HALES:

CSP method, described in Townsend_Hales.

CAMPBELL_THODOS:

CSP method, described in Campbell_Thodos.

COOLPROP:

CoolProp external library; with select fluids from its library. Range is limited to that of the equations of state it uses, as described in [5]. Very slow.

CRC_INORG_L_CONST:

Constant inorganic liquid densities, in [4].

VDI_TABULAR:

Tabular data in [6] along the saturation curve; interpolation is as set by the user or the default.

EOS:

Equation of state provided by user.

High pressure methods:

COSTALD_COMPRESSED:

CSP method, described in COSTALD_compressed. Calculates a low-pressure molar volume first, using T_dependent_property.

COOLPROP:

CoolProp external library; with select fluids from its library. Range is limited to that of the equations of state it uses, as described in [5]. Very slow, but unparalled in accuracy for pressure dependence.

EOS:

Equation of state provided by user.

References

1

Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, 8E. McGraw-Hill Professional, 2007.

2

Mchaweh, A., A. Alsaygh, Kh. Nasrifar, and M. Moshfeghian. “A Simplified Method for Calculating Saturated Liquid Densities.” Fluid Phase Equilibria 224, no. 2 (October 1, 2004): 157-67. doi:10.1016/j.fluid.2004.06.054

3(1,2,3)

Hankinson, Risdon W., and George H. Thomson. “A New Correlation for Saturated Densities of Liquids and Their Mixtures.” AIChE Journal 25, no. 4 (1979): 653-663. doi:10.1002/aic.690250412

4(1,2)

Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics. [Boca Raton, FL]: CRC press, 2014.

5(1,2)

Bell, Ian H., Jorrit Wronski, Sylvain Quoilin, and Vincent Lemort. “Pure and Pseudo-Pure Fluid Thermophysical Property Evaluation and the Open-Source Thermophysical Property Library CoolProp.” Industrial & Engineering Chemistry Research 53, no. 6 (February 12, 2014): 2498-2508. doi:10.1021/ie4033999. http://www.coolprop.org/

6

Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010.

Attributes
Tmax

Maximum temperature (K) at which the current method can calculate the property.

Tmin

Minimum temperature (K) at which the current method can calculate the property.

Methods

calculate(T, method)

Method to calculate low-pressure liquid molar volume at tempearture T with a given method.

calculate_P(T, P, method)

Method to calculate pressure-dependent liquid molar volume at temperature T and pressure P with a given method.

test_method_validity(T, method)

Method to check the validity of a method.

test_method_validity_P(T, P, method)

Method to check the validity of a high-pressure method.

property Tmax

Maximum temperature (K) at which the current method can calculate the property.

property Tmin

Minimum temperature (K) at which the current method can calculate the property.

calculate(T, method)[source]

Method to calculate low-pressure liquid molar volume at tempearture T with a given method.

This method has no exception handling; see T_dependent_property for that.

Parameters
Tfloat

Temperature at which to calculate molar volume, [K]

methodstr

Name of the method to use

Returns
Vmfloat

Molar volume of the liquid at T and a low pressure, [m^3/mol]

calculate_P(T, P, method)[source]

Method to calculate pressure-dependent liquid molar volume at temperature T and pressure P with a given method.

This method has no exception handling; see TP_dependent_property for that.

Parameters
Tfloat

Temperature at which to calculate molar volume, [K]

Pfloat

Pressure at which to calculate molar volume, [K]

methodstr

Name of the method to use

Returns
Vmfloat

Molar volume of the liquid at T and P, [m^3/mol]

name = 'Liquid molar volume'
property_max = 0.002

Maximum valid value of liquid molar volume. Generous limit.

property_min = 0

Mimimum valid value of liquid molar volume. It should normally occur at the triple point, and be well above this.

ranked_methods = ['DIPPR_PERRY_8E', 'VDI_PPDS', 'COOLPROP', 'MMSNM0FIT', 'VDI_TABULAR', 'HTCOSTALDFIT', 'RACKETTFIT', 'CRC_INORG_L', 'CRC_INORG_L_CONST', 'COMMON_CHEMISTRY', 'MMSNM0', 'HTCOSTALD', 'YEN_WOODS_SAT', 'RACKETT', 'YAMADA_GUNN', 'BHIRUD_NORMAL', 'TOWNSEND_HALES', 'CAMPBELL_THODOS', 'EOS']

Default rankings of the low-pressure methods.

ranked_methods_P = ['COOLPROP', 'COSTALD_COMPRESSED', 'EOS']

Default rankings of the high-pressure methods.

test_method_validity(T, method)[source]

Method to check the validity of a method. Follows the given ranges for all coefficient-based methods. For CSP methods, the models are considered valid from 0 K to the critical point. For tabular data, extrapolation outside of the range is used if tabular_extrapolation_permitted is set; if it is, the extrapolation is considered valid for all temperatures.

It is not guaranteed that a method will work or give an accurate prediction simply because this method considers the method valid.

BHIRUD_NORMAL behaves poorly at low temperatures and is not used under 0.35Tc. The constant value available for inorganic chemicals, from method CRC_INORG_L_CONST, is considered valid for all temperatures.

Parameters
Tfloat

Temperature at which to test the method, [K]

methodstr

Name of the method to test

Returns
validitybool

Whether or not a method is valid

test_method_validity_P(T, P, method)[source]

Method to check the validity of a high-pressure method. For COOLPROP, the fluid must be both a liquid and under the maximum pressure of the fluid’s EOS. COSTALD_COMPRESSED is considered valid for all values of temperature and pressure. However, it very often will not actually work, due to the form of the polynomial in terms of Tr, the result of which is raised to a negative power. For tabular data, extrapolation outside of the range is used if tabular_extrapolation_permitted is set; if it is, the extrapolation is considered valid for all temperatures and pressures.

It is not guaranteed that a method will work or give an accurate prediction simply because this method considers the method valid.

Parameters
Tfloat

Temperature at which to test the method, [K]

Pfloat

Pressure at which to test the method, [Pa]

methodstr

Name of the method to test

Returns
validitybool

Whether or not a method is valid

units = 'm^3/mol'
thermo.volume.volume_liquid_methods = ['DIPPR_PERRY_8E', 'VDI_PPDS', 'COOLPROP', 'MMSNM0FIT', 'VDI_TABULAR', 'HTCOSTALDFIT', 'RACKETTFIT', 'CRC_INORG_L', 'CRC_INORG_L_CONST', 'COMMON_CHEMISTRY', 'MMSNM0', 'HTCOSTALD', 'YEN_WOODS_SAT', 'RACKETT', 'YAMADA_GUNN', 'BHIRUD_NORMAL', 'TOWNSEND_HALES', 'CAMPBELL_THODOS', 'EOS']

Holds all low-pressure methods available for the VolumeLiquid class, for use in iterating over them.

thermo.volume.volume_liquid_methods_P = ['COOLPROP', 'COSTALD_COMPRESSED', 'EOS']

Holds all high-pressure methods available for the VolumeLiquid class, for use in iterating over them.

Pure Gas Volume

class thermo.volume.VolumeGas(CASRN='', MW=None, Tc=None, Pc=None, omega=None, dipole=None, eos=None, extrapolation=None, **kwargs)[source]

Bases: thermo.utils.tp_dependent_property.TPDependentProperty

Class for dealing with gas molar volume as a function of temperature and pressure.

All considered methods are both temperature and pressure dependent. Included are four CSP methods for calculating second virial coefficients, one source of polynomials for calculating second virial coefficients, one equation of state (Peng-Robinson), and the ideal gas law.

Parameters
CASRNstr, optional

The CAS number of the chemical

MWfloat, optional

Molecular weight, [g/mol]

Tcfloat, optional

Critical temperature, [K]

Pcfloat, optional

Critical pressure, [Pa]

omegafloat, optional

Acentric factor, [-]

dipolefloat, optional

Dipole, [debye]

load_databool, optional

If False, do not load property coefficients from data sources in files [-]

extrapolationstr or None

None to not extrapolate; see TDependentProperty for a full list of all options, [-]

methodstr or None, optional

If specified, use this method by default and do not use the ranked sorting; an exception is raised if this is not a valid method for the provided inputs, [-]

Notes

A string holding each method’s name is assigned to the following variables in this module, intended as the most convenient way to refer to a method. To iterate over all methods, use the list stored in volume_gas_methods.

PR:

Peng-Robinson Equation of State. See the appropriate module for more information.

CRC_VIRIAL:

Short polynomials, for 105 fluids from [1]. The full expression is:

\[B = \sum_1^4 a_i\left[T_0/298.15-1\right]^{i-1} \]
TSONOPOULOS_EXTENDED:

CSP method for second virial coefficients, described in chemicals.virial.BVirial_Tsonopoulos_extended

TSONOPOULOS:

CSP method for second virial coefficients, described in chemicals.virial.BVirial_Tsonopoulos

ABBOTT:

CSP method for second virial coefficients, described in chemicals.virial.BVirial_Abbott. This method is the simplest CSP method implemented.

PITZER_CURL:

CSP method for second virial coefficients, described in chemicals.virial.BVirial_Pitzer_Curl.

COOLPROP:

CoolProp external library; with select fluids from its library. Range is limited to that of the equations of state it uses, as described in [2]. Very slow, but unparalled in accuracy for pressure dependence.

References

1

Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics. [Boca Raton, FL]: CRC press, 2014.

2

Bell, Ian H., Jorrit Wronski, Sylvain Quoilin, and Vincent Lemort. “Pure and Pseudo-Pure Fluid Thermophysical Property Evaluation and the Open-Source Thermophysical Property Library CoolProp.” Industrial & Engineering Chemistry Research 53, no. 6 (February 12, 2014): 2498-2508. doi:10.1021/ie4033999. http://www.coolprop.org/

Attributes
Tmax

Maximum temperature (K) at which the current method can calculate the property.

Tmin

Minimum temperature (K) at which the current method can calculate the property.

Methods

calculate(T, method)

Method to calculate a property with a specified method, with no validity checking or error handling.

calculate_P(T, P, method)

Method to calculate pressure-dependent gas molar volume at temperature T and pressure P with a given method.

test_method_validity(T, method)

Method to test the validity of a specified method for a given temperature.

test_method_validity_P(T, P, method)

Method to check the validity of a pressure and temperature dependent gas molar volume method.

property Tmax

Maximum temperature (K) at which the current method can calculate the property.

property Tmin

Minimum temperature (K) at which the current method can calculate the property.

calculate(T, method)

Method to calculate a property with a specified method, with no validity checking or error handling. Demo function for testing only; must be implemented according to the methods available for each individual method. Include the interpolation call here.

Parameters
Tfloat

Temperature at which to calculate the property, [K]

methodstr

Method name to use

Returns
propfloat

Calculated property, [units]

calculate_P(T, P, method)[source]

Method to calculate pressure-dependent gas molar volume at temperature T and pressure P with a given method.

This method has no exception handling; see TP_dependent_property for that.

Parameters
Tfloat

Temperature at which to calculate molar volume, [K]

Pfloat

Pressure at which to calculate molar volume, [K]

methodstr

Name of the method to use

Returns
Vmfloat

Molar volume of the gas at T and P, [m^3/mol]

name = 'Gas molar volume'
property_max = 10000000000.0

Maximum valid value of gas molar volume. Set roughly at an ideal gas at 1 Pa and 2 billion K.

property_min = 0

Mimimum valid value of gas molar volume. It should normally be well above this.

ranked_methods = []

Default rankings of the low-pressure methods.

ranked_methods_P = ['COOLPROP', 'EOS', 'TSONOPOULOS_EXTENDED', 'TSONOPOULOS', 'ABBOTT', 'PITZER_CURL', 'CRC_VIRIAL', 'IDEAL']

Default rankings of the pressure-dependent methods.

test_method_validity(T, method)

Method to test the validity of a specified method for a given temperature. Demo function for testing only; must be implemented according to the methods available for each individual method. Include the interpolation check here.

Parameters
Tfloat

Temperature at which to determine the validity of the method, [K]

methodstr

Method name to use

Returns
validitybool

Whether or not a specifid method is valid

test_method_validity_P(T, P, method)[source]

Method to check the validity of a pressure and temperature dependent gas molar volume method. For the four CSP methods that calculate second virial coefficient, the method is considered valid for all temperatures and pressures, with validity checking based on the result only. For CRC_VIRIAL, there is no limit but there should be one; at some conditions, a negative volume will result! For COOLPROP, the fluid must be both a gas at the given conditions and under the maximum pressure of the fluid’s EOS.

For the equation of state PR, the determined phase must be a gas. For IDEAL, there are no limits.

For tabular data, extrapolation outside of the range is used if tabular_extrapolation_permitted is set; if it is, the extrapolation is considered valid for all temperatures and pressures.

It is not guaranteed that a method will work or give an accurate prediction simply because this method considers the method valid.

Parameters
Tfloat

Temperature at which to test the method, [K]

Pfloat

Pressure at which to test the method, [Pa]

methodstr

Name of the method to test

Returns
validitybool

Whether or not a method is valid

units = 'm^3/mol'
thermo.volume.volume_gas_methods = ['COOLPROP', 'EOS', 'CRC_VIRIAL', 'TSONOPOULOS_EXTENDED', 'TSONOPOULOS', 'ABBOTT', 'PITZER_CURL', 'IDEAL']

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

Pure Solid Volume

class thermo.volume.VolumeSolid(CASRN='', MW=None, Tt=None, Vml_Tt=None, extrapolation='linear', **kwargs)[source]

Bases: thermo.utils.t_dependent_property.TDependentProperty

Class for dealing with solid molar volume as a function of temperature. Consists of one constant value source, and one simple estimator based on liquid molar volume.

Parameters
CASRNstr, optional

CAS number

MWfloat, optional

Molecular weight, [g/mol]

Ttfloat, optional

Triple temperature

Vml_Ttfloat, optional

Liquid molar volume at the triple point

load_databool, optional

If False, do not load property coefficients from data sources in files [-]

extrapolationstr or None

None to not extrapolate; see TDependentProperty for a full list of all options, [-]

methodstr or None, optional

If specified, use this method by default and do not use the ranked sorting; an exception is raised if this is not a valid method for the provided inputs, [-]

Notes

A string holding each method’s name is assigned to the following variables in this module, intended as the most convenient way to refer to a method. To iterate over all methods, use the list stored in volume_solid_methods.

CRC_INORG_S:

Constant values in [1], for 1872 chemicals.

GOODMAN:

Simple method using the liquid molar volume. Good up to 0.3*Tt. See Goodman for details.

References

1

Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics. [Boca Raton, FL]: CRC press, 2014.

Methods

calculate(T, method)

Method to calculate the molar volume of a solid at tempearture T with a given method.

test_method_validity(T, method)

Method to check the validity of a method.

calculate(T, method)[source]

Method to calculate the molar volume of a solid at tempearture T with a given method.

This method has no exception handling; see T_dependent_property for that.

Parameters
Tfloat

Temperature at which to calculate molar volume, [K]

methodstr

Name of the method to use

Returns
Vmsfloat

Molar volume of the solid at T, [m^3/mol]

name = 'Solid molar volume'
property_max = 0.002

Maximum value of Heat capacity; arbitrarily set to 0.002, as the largest in the data is 0.00136.

property_min = 0.0

Molar volume cannot be under 0.

ranked_methods = ['CRC_INORG_S', 'GOODMAN']

Default rankings of the available methods.

test_method_validity(T, method)[source]

Method to check the validity of a method. Follows the given ranges for all coefficient-based methods. For tabular data, extrapolation outside of the range is used if tabular_extrapolation_permitted is set; if it is, the extrapolation is considered valid for all temperatures.

It is not guaranteed that a method will work or give an accurate prediction simply because this method considers the method valid.

Parameters
Tfloat

Temperature at which to test the method, [K]

methodstr

Name of the method to test

Returns
validitybool

Whether or not a method is valid

units = 'm^3/mol'
thermo.volume.volume_solid_methods = ['GOODMAN', 'CRC_INORG_S']

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

Mixture Liquid Volume

class thermo.volume.VolumeLiquidMixture(MWs=[], Tcs=[], Pcs=[], Vcs=[], Zcs=[], omegas=[], CASs=[], VolumeLiquids=[], **kwargs)[source]

Bases: thermo.utils.mixture_property.MixtureProperty

Class for dealing with the molar volume of a liquid mixture as a function of temperature, pressure, and composition. Consists of one electrolyte-specific method, four corresponding states methods which do not use pure-component volumes, and one mole-weighted averaging method.

Prefered method is LINEAR, or LALIBERTE if the mixture is aqueous and has electrolytes.

Parameters
MWslist[float], optional

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

Tcslist[float], optional

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

Pcslist[float], optional

Critical pressures of all species in the mixture, [Pa]

Vcslist[float], optional

Critical molar volumes of all species in the mixture, [m^3/mol]

Zcslist[float], optional

Critical compressibility factors of all species in the mixture, [Pa]

omegaslist[float], optional

Accentric factors of all species in the mixture, [-]

CASslist[str], optional

The CAS numbers of all species in the mixture, [-]

VolumeLiquidslist[VolumeLiquid], optional

VolumeLiquid objects created for all species in the mixture, [-]

correct_pressure_purebool, optional

Whether to try to use the better pressure-corrected pure component models or to use only the T-only dependent pure species models, [-]

Notes

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

LALIBERTE:

Aqueous electrolyte model equation with coefficients; see thermo.electrochem.Laliberte_density for more details.

COSTALD_MIXTURE:

CSP method described in COSTALD_mixture.

COSTALD_MIXTURE_FIT:

CSP method described in COSTALD_mixture, with two mixture composition independent fit coefficients, Vc and omega.

RACKETT:

CSP method described in Rackett_mixture.

RACKETT_PARAMETERS:

CSP method described in Rackett_mixture, but with a mixture independent fit coefficient for compressibility factor for each species.

LINEAR:

Linear mole fraction mixing rule described in mixing_simple; also known as Amgat’s law.

References

1

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

Methods

calculate(T, P, zs, ws, method)

Method to calculate molar volume of a liquid mixture at temperature T, pressure P, mole fractions zs and weight fractions ws with a given method.

test_method_validity(T, P, zs, ws, method)

Method to test the validity of a specified method for the given conditions.

Tmax

Maximum temperature at which no method can calculate the property above.

Tmin

Minimum temperature at which no method can calculate the property under.

calculate(T, P, zs, ws, method)[source]

Method to calculate molar volume of a liquid mixture at temperature T, pressure P, mole fractions zs and weight fractions ws with a given method.

This method has no exception handling; see mixture_property for that.

Parameters
Tfloat

Temperature at which to calculate the property, [K]

Pfloat

Pressure at which to calculate the property, [Pa]

zslist[float]

Mole fractions of all species in the mixture, [-]

wslist[float]

Weight fractions of all species in the mixture, [-]

methodstr

Name of the method to use

Returns
Vmfloat

Molar volume of the liquid mixture at the given conditions, [m^3/mol]

name = 'Liquid volume'
property_max = 0.002

Maximum valid value of liquid molar volume. Generous limit.

property_min = 0

Mimimum valid value of liquid molar volume. It should normally occur at the triple point, and be well above this.

ranked_methods = ['LALIBERTE', 'LINEAR', 'COSTALD_MIXTURE_FIT', 'RACKETT_PARAMETERS', 'COSTALD_MIXTURE', 'RACKETT']
test_method_validity(T, P, zs, ws, method)[source]

Method to test the validity of a specified method for the given conditions. No methods have implemented checks or strict ranges of validity.

Parameters
Tfloat

Temperature at which to check method validity, [K]

Pfloat

Pressure at which to check method validity, [Pa]

zslist[float]

Mole fractions of all species in the mixture, [-]

wslist[float]

Weight fractions of all species in the mixture, [-]

methodstr

Method name to use

Returns
validitybool

Whether or not a specifid method is valid

units = 'm^3/mol'
thermo.volume.volume_liquid_mixture_methods = ['LALIBERTE', 'LINEAR', 'COSTALD_MIXTURE_FIT', 'RACKETT_PARAMETERS', <function COSTALD>, 'RACKETT']

Holds all low-pressure methods available for the VolumeLiquidMixture class, for use in iterating over them.

Mixture Gas Volume

class thermo.volume.VolumeGasMixture(eos=None, CASs=[], VolumeGases=[], MWs=[], **kwargs)[source]

Bases: thermo.utils.mixture_property.MixtureProperty

Class for dealing with the molar volume of a gas mixture as a function of temperature, pressure, and composition. Consists of an equation of state, the ideal gas law, and one mole-weighted averaging method.

Prefered method is EOS, or IDEAL if critical properties of components are unavailable.

Parameters
CASslist[str], optional

The CAS numbers of all species in the mixture, [-]

VolumeGaseslist[VolumeGas], optional

VolumeGas objects created for all species in the mixture, [-]

eoscontainer[EOS Object], optional

Equation of state mixture object, [-]

MWslist[float], optional

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

Notes

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

EOS:

Equation of state mixture object; see thermo.eos_mix for more details.

LINEAR:

Linear mole fraction mixing rule described in mixing_simple; more correct than the ideal gas law.

IDEAL:

The ideal gas law.

References

1

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

Methods

calculate(T, P, zs, ws, method)

Method to calculate molar volume of a gas mixture at temperature T, pressure P, mole fractions zs and weight fractions ws with a given method.

test_method_validity(T, P, zs, ws, method)

Method to test the validity of a specified method for the given conditions.

Tmax

Maximum temperature at which no method can calculate the property above.

Tmin

Minimum temperature at which no method can calculate the property under.

calculate(T, P, zs, ws, method)[source]

Method to calculate molar volume of a gas mixture at temperature T, pressure P, mole fractions zs and weight fractions ws with a given method.

This method has no exception handling; see mixture_property for that.

Parameters
Tfloat

Temperature at which to calculate the property, [K]

Pfloat

Pressure at which to calculate the property, [Pa]

zslist[float]

Mole fractions of all species in the mixture, [-]

wslist[float]

Weight fractions of all species in the mixture, [-]

methodstr

Name of the method to use

Returns
Vmfloat

Molar volume of the gas mixture at the given conditions, [m^3/mol]

name = 'Gas volume'
property_max = 10000000000.0

Maximum valid value of gas molar volume. Set roughly at an ideal gas at 1 Pa and 2 billion K.

property_min = 0.0

Mimimum valid value of gas molar volume. It should normally be well above this.

ranked_methods = ['EOS', 'LINEAR', 'IDEAL', 'LINEAR_MISSING_IDEAL']
test_method_validity(T, P, zs, ws, method)[source]

Method to test the validity of a specified method for the given conditions. No methods have implemented checks or strict ranges of validity.

Parameters
Tfloat

Temperature at which to check method validity, [K]

Pfloat

Pressure at which to check method validity, [Pa]

zslist[float]

Mole fractions of all species in the mixture, [-]

wslist[float]

Weight fractions of all species in the mixture, [-]

methodstr

Method name to use

Returns
validitybool

Whether or not a specifid method is valid

units = 'm^3/mol'
thermo.volume.volume_gas_mixture_methods = ['EOS', 'LINEAR', 'IDEAL']

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

Mixture Solid Volume

class thermo.volume.VolumeSolidMixture(CASs=[], VolumeSolids=[], MWs=[], **kwargs)[source]

Bases: thermo.utils.mixture_property.MixtureProperty

Class for dealing with the molar volume of a solid mixture as a function of temperature, pressure, and composition. Consists of only mole-weighted averaging.

Parameters
CASslist[str], optional

The CAS numbers of all species in the mixture, [-]

VolumeSolidslist[VolumeSolid], optional

VolumeSolid objects created for all species in the mixture, [-]

MWslist[float], optional

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

Notes

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

LINEAR:

Linear mole fraction mixing rule described in mixing_simple.

Methods

calculate(T, P, zs, ws, method)

Method to calculate molar volume of a solid mixture at temperature T, pressure P, mole fractions zs and weight fractions ws with a given method.

test_method_validity(T, P, zs, ws, method)

Method to test the validity of a specified method for the given conditions.

Tmax

Maximum temperature at which no method can calculate the property above.

Tmin

Minimum temperature at which no method can calculate the property under.

calculate(T, P, zs, ws, method)[source]

Method to calculate molar volume of a solid mixture at temperature T, pressure P, mole fractions zs and weight fractions ws with a given method.

This method has no exception handling; see mixture_property for that.

Parameters
Tfloat

Temperature at which to calculate the property, [K]

Pfloat

Pressure at which to calculate the property, [Pa]

zslist[float]

Mole fractions of all species in the mixture, [-]

wslist[float]

Weight fractions of all species in the mixture, [-]

methodstr

Name of the method to use

Returns
Vmfloat

Molar volume of the solid mixture at the given conditions, [m^3/mol]

name = 'Solid molar volume'
property_max = 0.002

Maximum value of Heat capacity; arbitrarily set to 0.002, as the largest in the data is 0.00136.

property_min = 0

Molar volume cannot be under 0.

ranked_methods = ['LINEAR']
test_method_validity(T, P, zs, ws, method)[source]

Method to test the validity of a specified method for the given conditions. No methods have implemented checks or strict ranges of validity.

Parameters
Tfloat

Temperature at which to check method validity, [K]

Pfloat

Pressure at which to check method validity, [Pa]

zslist[float]

Mole fractions of all species in the mixture, [-]

wslist[float]

Weight fractions of all species in the mixture, [-]

methodstr

Method name to use

Returns
validitybool

Whether or not a specifid method is valid

units = 'm^3/mol'
thermo.volume.volume_solid_mixture_methods = ['LINEAR']

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