Constantinou

class lib.newComponent.constantinou.Constantinou(**kwargs)[source]

Bases: GroupContribution

Group contribution for definition of unknown component using the Constantinou-Gani procedure (1994). This method is fairly complete, can calculate critical properties, boiling and melting temperature, enthalpy and gibbs free energy of formation, vaporization heat, acentric factor and ideal gas heat capacity dependence with temperature.

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

M: float, optional

Molecular weight, [-]

SG: float, optional

Specific gravity, [-]

Methods

calculo()

Calculation procedure

Notes

M and SG are optional input, anyway know them improve the estimation

Examples

Example from [2] to distinguish between isomers, dimethylhexanes 1st order only

>>> cmp = Constantinou(group=[0, 1, 2], contribution=[4, 2, 2])
>>> "%0.2f %0.2f" % (cmp.Tc, cmp.Tb)
'557.91 385.92'

Adding 2nd order contributions

>>> c23 = Constantinou(group=[0, 1, 2, 80], contribution=[4, 2, 2, 1])
>>> c24 = Constantinou(group=[0, 1, 2, 78], contribution=[4, 2, 2, 1])
>>> c25 = Constantinou(group=[0, 1, 2, 78], contribution=[4, 2, 2, 2])
>>> "%0.2f %0.2f %0.2f" % (c23.Tc, c24.Tc, c25.Tc)
'566.60 553.41 548.80'
>>> "%0.2f %0.2f %0.2f" % (c23.Tb, c24.Tb, c25.Tb)
'391.41 382.32 378.64'

Examples from Table 15a and 15b and 16 in [2]

>>> cmp1 = Constantinou(
... group=[0, 1, 2, 3, 15], contribution=[3, 1, 1, 1, 2])
>>> cmp2 = Constantinou(group=[0, 1, 2, 38], contribution=[2, 1, 1, 1])
>>> cmp3 = Constantinou(
... group=[0, 1, 2, 3, 15, 105, 106], contribution=[3, 1, 1, 1, 2, 1, 1])
>>> cmp4 = Constantinou(
... group=[0, 1, 2, 38, 78], contribution=[2, 1, 1, 1, 1])
>>> "%0.2f %0.2f %0.2f %0.2f" % (cmp1.Tb, cmp2.Tb, cmp3.Tb, cmp4.Tb)
'488.39 452.14 465.18 449.54'
>>> cmp1 = Constantinou(group=[6, 4, 0], contribution=[1, 1, 1])
>>> cmp2 = Constantinou(group=[0, 13, 12, 10], contribution=[1, 1, 1, 4])
>>> cmp3 = Constantinou(group=[6, 4, 0, 88], contribution=[1, 1, 1, 1])
>>> "%0.2f %0.3f %0.3f" % (
... cmp1.Gf.kJg*cmp1.M, cmp2.Gf.kJg*cmp2.M, cmp3.Gf.kJg*cmp3.M)
'150.47 131.007 144.965'

Examples from Table A1, A2 and A3 in [3]

>>> cmp1 = Constantinou(group=[0, 2], contribution=[5, 3])
>>> cmp2 = Constantinou(group=[0, 17, 1, 2], contribution=[2, 1, 1, 1])
>>> cmp3 = Constantinou(group=[0, 2, 80], contribution=[5, 3, 2])
>>> cmp4 = Constantinou(
... group=[0, 17, 1, 2, 78, 95], contribution=[2, 1, 1, 1, 1, 1])
>>> "%0.5f %0.5f %0.5f %0.5f" % (
... cmp1.Vliq/cmp1.M, cmp2.Vliq/cmp2.M, cmp3.Vliq/cmp3.M, cmp4.Vliq/cmp4.M)
'0.16414 0.12446 0.16008 0.12549'
>>> "%0.4f %0.4f %0.4f %0.4f" % (
... cmp1.f_acent, cmp2.f_acent, cmp3.f_acent, cmp4.f_acent)
'0.3195 0.4430 0.3167 0.3863'

Example 2-2 in [1], 2-ethylphenol critical properties

>>> cmp = Constantinou(group=[0, 10, 13, 16], contribution=[1, 4, 1, 1])
>>> "%0.1f %0.2f %0.1f" % (cmp.Tc, cmp.Pc.bar, cmp.Vc.ccg*cmp.M)
'718.6 42.97 371.9'
>>> cmp.formula
'C8H10O'

Example 2-3 in [1], butanols critical properties

>>> b1 = Constantinou(group=[0, 1, 15], contribution=[1, 3, 1])

2-met-1-propanol CHOH Second order contribution is zero

>>> b2m1 = Constantinou(
... group=[0, 1, 2, 15, 78], contribution=[2, 1, 1, 1, 1])
>>> b2m2 = Constantinou(
... group=[0, 3, 15, 79, 106], contribution=[3, 1, 1, 1, 1])
>>> b2 = Constantinou(
... group=[0, 1, 2, 15, 105], contribution=[2, 1, 1, 1, 1])
>>> "%0.2f %0.2f %0.2f %0.2f" % (b1.Tc, b2m1.Tc, b2m2.Tc, b2.Tc)
'558.91 543.31 497.46 521.57'
>>> "%0.2f %0.2f %0.2f %0.2f" % (
... b1.Pc.bar, b2m1.Pc.bar, b2m2.Pc.bar, b2.Pc.bar)
'41.97 41.66 42.32 44.28'
>>> "%0.1f %0.1f %0.1f %0.1f" % (b1.Vc.ccg*b1.M, b2m1.Vc.ccg*b2m1.M,
...  b2m2.Vc.ccg*b2m2.M, b2.Vc.ccg*b2.M)
'276.9 276.0 280.2 264.2'

Example 2-9 in [1], 2,3,3-trimethylpentane

>>> c1 = Constantinou(group=[0, 1, 2, 3], contribution=[5, 1, 1, 1])
>>> c2 = Constantinou(group=[0, 1, 2, 3, 81], contribution=[5, 1, 1, 1, 1])
>>> "%0.3f %0.3f" % (c1.f_acent, c2.f_acent)
'0.301 0.292'

Example 2-11 in [1], 2,4-dimethylphenol

>>> cmp = Constantinou(group=[10, 12, 16], contribution=[3, 2, 1])
>>> "%0.2f %0.2f" % (cmp.Tf, cmp.Tb)
'315.96 492.33'

Example 2-12 in [1], cycloalkanes

>>> c7 = Constantinou(group=[1, 87], contribution=[7, 1])
>>> mc6 = Constantinou(
... group=[0, 1, 2, 86, 92], contribution=[1, 5, 1, 1, 1])
>>> ec5 = Constantinou(
... group=[0, 1, 2, 85, 92], contribution=[1, 5, 1, 1, 1])
>>> c5 = Constantinou(
... group=[0, 1, 2, 85], contribution=[2, 3, 2, 1])
>>> t5 = Constantinou(
... group=[0, 1, 2, 85], contribution=[2, 3, 2, 1])
>>> "%0.2f %0.2f %0.2f %0.2f %0.2f" % (c7.Tf, mc6.Tf, ec5.Tf, c5.Tf, t5.Tf)
'266.15 146.46 122.14 166.79 166.79'
>>> "%0.2f %0.2f %0.2f %0.2f %0.2f" % (c7.Tb, mc6.Tb, ec5.Tb, c5.Tb, t5.Tb)
'391.93 377.81 377.69 364.27 364.27'

Example 3-2 in [1], 2-ethylphenol ΔH and ΔG

>>> cmp = Constantinou(group=[0, 10, 13, 16], contribution=[1, 4, 1, 1])
>>> "%0.3f %0.3f" % (cmp.Hf.kJg*cmp.M, cmp.Gf.kJg*cmp.M)
'-145.561 -23.595'
>>> "%0.2f" % (cmp._Cp0(700).JgK*cmp.M)
'286.35'

Example 3-3 in [1], butanols formations properties Component definition above in example 2-3

>>> "%0.2f %0.2f %0.2f %0.2f" % (
... b1.Hf.kJg*b1.M, b2m1.Hf.kJg*b2m1.M, b2m2.Hf.kJg*b2m2.M, b2.Hf.kJg*b2.M)
'-278.82 -287.87 -316.77 -290.90'
>>> "%0.2f %0.2f %0.2f %0.2f" % (
... b1.Gf.kJg*b1.M, b2m1.Gf.kJg*b2m1.M, b2m2.Gf.kJg*b2m2.M, b2.Gf.kJg*b2.M)
'-156.75 -161.10 -180.70 -168.17'
>>> "%0.1f %0.1f %0.1f %0.1f" % (b1._Cp0(298).JgK*b1.M,
...  b2m1._Cp0(298).JgK*b2m1.M, b2m2._Cp0(298).JgK*b2m2.M,
... b2._Cp0(298).JgK*b2.M)
'110.5 109.8 111.9 111.7'

Example in [4] pag. 2-471, 2,6-dimethylpyridine

>>> cmp = Constantinou(group=[0, 36, 86], contribution=[2, 1, 1])
>>> "%0.0f" % cmp.Tf
'278'
FirstOrder = 78
SecondOrder = 121
calculo()[source]

Calculation procedure

_Cp0(T)[source]

Ideal gas specific heat calculation

Parameters:
Tfloat

Temperature, [K]

Returns:
cp0float

Ideal gas specific heat, [J/kgK]

References