Constantinou¶
- class lib.newComponent.constantinou.Constantinou(**kwargs)[source]¶
Bases:
GroupContributionGroup 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¶