mission

CAPE-OPEN
COCO
Excel Thermo Import
Excel Unit Operation
Matlab Unit Operation
Matlab Thermo Import
OO Calc Thermo Import
REFPROP PPM
SciLab Unit Operation
SciLab Thermo Import
Python Thermo Import
» 
Examples
Help
FlowExchange
ThermoSystemAdapter

ScanIt

downloads

services

links

about us

contact us

Examples:

>>> import capeopen_thermo
>>> print(capeopen_thermo.systems()) #note: output is system dependent

['ChemSep Property Package Manager', 'Multiflash Property Package Manager', 'OATS Property Package Manager (CAPE-OPEN 1.1, x64)', 'REFPROP CAPE-OPEN 1.1', 'TEA (CAPE-OPEN 1.1)', 'Water']

>>> system=capeopen_thermo.System('REFPROP CAPE-OPEN 1.1')
>>> print(system.name)

REFPROP CAPE-OPEN 1.1

>>> print(system.package_names) #note, this assumes REFPROP CAPE-OPEN Property Package Manager is installed, and output depends on configured property packages

['C1C2', 'C1C2C3', 'C3 C4 C5']

>>> pkg=system.create_package('C1C2C3')
>>> print(pkg.name)

C1C2C3

>>> print([c.name for c in pkg.compounds])

['methane', 'ethane', 'propane']

>>> print(pkg.constant_compound_properties)

['casRegistryNumber', 'chemicalFormula', 'acentricFactor', 'charge', 'criticalDensity', 'criticalPressure', 'criticalTemperature', 'criticalVolume', 'dipoleMoment', 'molecularWeight', 'normalBoilingPoint']

>>> print(pkg.temperature_dependent_compound_properties)

['vaporPressure', 'vaporPressure.Dtemperature', 'fugacityCoefficientOfVapor', 'heatCapacityOfLiquid', 'heatOfVaporization', 'surfaceTensionSatLiquid', 'thermalConductivityOfLiquid', 'thermalConductivityOfVapor', 'virialCoefficient', 'virialCoefficient.Dtemperature', 'idealGasEnthalpy', 'idealGasEnthalpy.Dtemperature', 'idealGasEntropy', 'idealGasHeatCapacity', 'viscosityOfLiquid', 'viscosityOfVapor', 'volumeChangeUponVaporization', 'volumeOfLiquid']

>>> print(pkg.phase_properties)

['compressibility', 'compressibility.Dtemperature', 'compressibility.Dpressure', 'compressibility.Dmoles', 'compressibility.DmolFraction', 'compressibilityFactor', 'compressibilityFactor.Dtemperature', 'compressibilityFactor.Dpressure', 'compressibilityFactor.Dmoles', 'compressibilityFactor.DmolFraction', 'density', 'density.Dtemperature', 'density.Dpressure', 'density.Dmoles', 'density.DmolFraction', 'enthalpy', 'enthalpy.Dtemperature', 'enthalpy.Dpressure', 'enthalpy.Dmoles', 'enthalpy.DmolFraction', 'entropy', 'entropy.Dtemperature', 'entropy.Dpressure', 'entropy.Dmoles', 'entropy.DmolFraction', 'fugacity', 'fugacity.Dtemperature', 'fugacity.Dpressure', 'fugacity.Dmoles', 'fugacity.DmolFraction', 'fugacityCoefficient', 'fugacityCoefficient.Dtemperature', 'fugacityCoefficient.Dpressure', 'fugacityCoefficient.Dmoles', 'fugacityCoefficient.DmolFraction', 'gibbsEnergy', 'gibbsEnergy.Dtemperature', 'gibbsEnergy.Dpressure', 'gibbsEnergy.Dmoles', 'gibbsEnergy.DmolFraction', 'heatCapacityCp', 'heatCapacityCp.Dtemperature', 'heatCapacityCp.Dpressure', 'heatCapacityCp.Dmoles', 'heatCapacityCp.DmolFraction', 'heatCapacityCv', 'heatCapacityCv.Dtemperature', 'heatCapacityCv.Dpressure', 'heatCapacityCv.Dmoles', 'heatCapacityCv.DmolFraction', 'helmholtzEnergy', 'helmholtzEnergy.Dtemperature', 'helmholtzEnergy.Dpressure', 'helmholtzEnergy.Dmoles', 'helmholtzEnergy.DmolFraction', 'internalEnergy', 'internalEnergy.Dtemperature', 'internalEnergy.Dpressure', 'internalEnergy.Dmoles', 'internalEnergy.DmolFraction', 'jouleThomsonCoefficient', 'jouleThomsonCoefficient.Dtemperature', 'jouleThomsonCoefficient.Dpressure', 'jouleThomsonCoefficient.Dmoles', 'jouleThomsonCoefficient.DmolFraction', 'logFugacityCoefficient', 'logFugacityCoefficient.Dtemperature', 'logFugacityCoefficient.Dpressure', 'logFugacityCoefficient.Dmoles', 'logFugacityCoefficient.DmolFraction', 'speedOfSound', 'speedOfSound.Dtemperature', 'speedOfSound.Dpressure', 'speedOfSound.Dmoles', 'speedOfSound.DmolFraction', 'thermalConductivity', 'thermalConductivity.Dtemperature', 'thermalConductivity.Dpressure', 'thermalConductivity.Dmoles', 'thermalConductivity.DmolFraction', 'viscosity', 'viscosity.Dtemperature', 'viscosity.Dpressure', 'viscosity.Dmoles', 'viscosity.DmolFraction', 'volume', 'volume.Dtemperature', 'volume.Dpressure', 'volume.Dmoles', 'volume.DmolFraction', 'molecularWeight']

>>> print(pkg.phase_pair_properties)

['kvalue', 'kvalue.Dtemperature', 'kvalue.Dpressure', 'kvalue.Dmoles', 'kvalue.DmolFraction', 'logKvalue', 'logKvalue.Dtemperature', 'logKvalue.Dpressure', 'logKvalue.Dmoles', 'logKvalue.DmolFraction', 'surfaceTension', 'surfaceTension.Dtemperature', 'surfaceTension.Dpressure', 'surfaceTension.Dmoles', 'surfaceTension.DmolFraction']

>>> print(pkg.phase_equilibrium_properties)

['temperature', 'pressure', 'vaporFraction', 'enthalpy', 'entropyF', 'volume']

>>> c=pkg.compounds[1] #second compound
>>> print(c.name)

ethane

>>> print(c.constant_properties)

['casRegistryNumber', 'chemicalFormula', 'acentricFactor', 'charge', 'criticalDensity', 'criticalPressure', 'criticalTemperature', 'criticalVolume', 'dipoleMoment', 'molecularWeight', 'normalBoilingPoint']

>>> print(c.temperature_dependent_properties)

['vaporPressure', 'vaporPressure.Dtemperature', 'fugacityCoefficientOfVapor', 'heatCapacityOfLiquid', 'heatOfVaporization', 'surfaceTensionSatLiquid', 'thermalConductivityOfLiquid', 'thermalConductivityOfVapor', 'virialCoefficient', 'virialCoefficient.Dtemperature', 'idealGasEnthalpy', 'idealGasEnthalpy.Dtemperature', 'idealGasEntropy', 'idealGasHeatCapacity', 'viscosityOfLiquid', 'viscosityOfVapor', 'volumeChangeUponVaporization', 'volumeOfLiquid']

>>> print(c.formula())

C2H6

>>> print(c.get_constant('CriticalTemperature'))

305.322

>>> print(capeopen_thermo.unit_of_measure('CriticalTemperature'))

K

>>> print(c.get_temperature_dependent_property('VaporPressure',180))

78638.13697265263

>>> print(capeopen_thermo.unit_of_measure('VaporPressure'))

Pa

>>> print(c.get_temperature_dependent_property(['VaporPressure','VaporPressure.Dtemperature'],180)) #any iterable of strings can be used as property list

[78638.13697265263, 4485.691704657636]

>>> print([pt.state_of_aggregation for pt in pkg.phase_types])

['vapor', 'liquid']

>>> vap=pkg.create_vapor_phase(180,1e5,[0.1,0.3,0.6]) #any iterable of real can be used for composition
>>> print(vap.name,vap.t,vap.p,vap.x)

Vapor 180.0 100000.0 [0.1, 0.3, 0.6]

>>> vap.t=170
>>> print(vap.get_property('density'))

71.18843885384538

>>> print(capeopen_thermo.unit_of_measure('density'))

mol/m3

>>> print(vap.get_property(['logFugacityCoefficient','density','density.DmolFraction'])) #list of [list, scalar, list]

[[0.023221227916101796, -0.030950956130479112, -0.08299502341532716], 71.18843885384538, [-56.97110887633571, -50.66746743410051, -45.470775819829605]]

>>> e=pkg.create_phase_equilibrium([0.3,0.5,0.2],'pressure',1e5,'vaporFraction',0.5)
>>> print(e.vapor_fraction,e.t,e.p)

0.5 177.4309136102493 100000.0

>>> for phase in e.phases:
>>>     print(phase.name,"fraction",phase.phase_fraction,"composition",phase.x,"fugacity",phase.get_property('fugacity'))

Vapor fraction 0.5 composition [0.583219546716666, 0.40018878210558884, 0.016591671177745182] fugacity [57920.84428219625, 38737.42354385154, 1565.2452012306112]
Liquid fraction 0.5 composition [0.016782702155810687, 0.5998104253548305, 0.3834068724893588] fugacity [57920.844282122685, 38737.42354380174, 1565.2452012286094]

>>> print(e.get_property('enthalpy'))

5826.384263659671

The following example requires matplotlib:
>>> import matplotlib.pyplot as plt
>>> import capeopen_thermo
>>> pkg=capeopen_thermo.System('TEA (CAPE-OPEN 1.1)').create_package('C1_C2')
>>> X=[i/20.0 for i in range(0,21)]
>>> Tbub=[pkg.create_phase_equilibrium([x1,1-x1],'pressure',1e5,'vaporfraction',0).t for x1 in X]
>>> Tdew=[pkg.create_phase_equilibrium([x1,1-x1],'pressure',1e5,'vaporfraction',1).t for x1 in X]
>>> plt.plot(X,Tbub,'rx-')
>>> plt.plot(X,Tdew,'bx-')
>>> plt.xlabel('X '+pkg.compounds[0].name+', mol/mol')
>>> plt.ylabel('T, K')
>>> plt.show()
graph