Ambrose

class lib.newComponent.ambrose.Ambrose(**kwargs)[source]

Bases: GroupContribution

Group contribution for definition of unknown component using the Ambrose procedure as use in API Technical Databook, procedure 4A1.1 with aditional term from Perry’s Handbook. This method is able to calculate the critical properties.

The resulting instance has all the necessary properties to use in PFD as a predefined compound, using general properties for calculation of other mandatory properties don’t defined by the method.

Parameters:
grouparray

List with group index

contributionfloat

List with group count ocurrences

plattint

ΔPlatt number, [-]

Tbfloat

Normal boiling temperature, [K]

Mfloat, optional

Molecular weight, [-]

SGfloat, optional

Specific gravity, [-]

Methods

calculo()

Calculate procedure with common functionality and define the properties don't defined by the method The child class must implement the specific calculate procedure and call this method it is necessary to finish definition

isCalculable()

Procedure to define the status of input parameter

Notes

M and SG are optional input, anyway know them improve the estimation The Platt number is the number of pairs of carbon atoms which are separated by three carbon-carbon bonds and is an indicator of the degree of branching in the molecule. The Platt number of an n-alkane is equal to the number of carbons minus three.

Examples

Example 1 in [3], 2,2,3-Trimethylpentane

>>> Tb = unidades.Temperature(229.72, "F")
>>> cmp = Ambrose(group=[0, 1, 2, 3], contribution=[5, 1, 1, 1],
... Tb=Tb, platt=3)
>>> "%0.2f %0.2f %0.4f" % (cmp.Tc.F, cmp.Pc.psi, cmp.Vc.ft3lb)
'555.83 400.74 0.0639'
>>> cmp.formula
'C8H18'

Example 2 in [3], 2-Methyl-1-butene

>>> Tb = unidades.Temperature(88.09, "F")
>>> cmp = Ambrose(group=[0, 1, 4, 6], contribution=[2, 1, 1, 1],
... Tb=Tb, platt=0)
>>> "%0.2f %0.1f %0.4f" % (cmp.Tc.F, cmp.Pc.psi, cmp.Vc.ft3lb)
'385.95 520.3 0.0657'

Example 3 in [3], cis-Decalin

>>> Tb = unidades.Temperature(384.47, "F")
>>> cmp = Ambrose(group=[10, 12], contribution=[8, 2], Tb=Tb, platt=0)
>>> "%0.2f %0.2f %0.4f" % (cmp.Tc.F, cmp.Pc.psi, cmp.Vc.ft3lb)
'801.95 430.06 0.0562'

Example 4 in [3], tert-Butyl benzene

>>> Tb = unidades.Temperature(336.41, "F")
>>> cmp = Ambrose(group=[0, 3, 17], contribution=[3, 1, 1],
... Tb=Tb, platt=-1)
>>> "%0.2f %0.2f %0.4f" % (cmp.Tc.F, cmp.Pc.psi, cmp.Vc.ft3lb)
'705.82 415.97 0.0555'

Example 5 in [3], Anthracene

>>> Tb = unidades.Temperature(646.16, "F")
>>> cmp = Ambrose(group=[18, 28], contribution=[1, 2], M=178.23, Tb=Tb,
... platt=0)
>>> "%0.1f %0.2f %0.4f" % (cmp.Tc.F, cmp.Pc.psi, cmp.Vc.ft3lb)
'1165.3 504.64 0.0502'

Example from [4], 2,2,4-trimethylpentane

>>> cmp = Ambrose(group=[0, 1, 2, 3], contribution=[5, 1, 1, 1],
... Tb=372.39, platt=0)
>>> "%0.1f %0.2f %0.1f" % (cmp.Tc, cmp.Pc.bar, cmp.Vc.ccg*cmp.M)
'543.0 25.63 455.8'
kwargs = {'M': 0.0, 'SG': 0.0, 'Tb': 0.0, 'contribution': [], 'group': [], 'name': '', 'platt': 0}
FirstOrder = 57
SecondOrder = 65
isCalculable()[source]

Procedure to define the status of input parameter

_group()[source]

From group contribution desglose the chemical composition

calculo()[source]

Calculate procedure with common functionality and define the properties don’t defined by the method The child class must implement the specific calculate procedure and call this method it is necessary to finish definition

References