En
esta ocasión aplicaremos todo lo que se ha visto en las entradas pasadas. En este ejemplo obtendremos la masa aparente,
densidad, temperatura y presión pseudocrítica y por último el factor de
compresibilidad. Primero obtendremos la temperatura y presión pseudocrítica
para un componente pesado por medio de Steward, continuando obtenemos la
corrección de impurezas por medio del método de Carr-Kobayashi-Burrows y Sutton.
Para terminar, se calcula el factor z con los resultados anteriores, observando
así la variación de cada uno de los métodos.
import
pandas as pd
import
math as math
import
numpy as np
i = ["N2","CH4","C2H6","C3H8","C4H10","C4H10","C5H12","C5H12","C6H14"
,"C7+"]
Yi = [0.0138,0.9302,0.0329,0.0136,0.0023,0.0037,0.0012,0.0010,0.0008,0.0005]
Mi =
[28.0134,16.0430,30.0700,44.0970,58.1230,58.1230,72.1500,72.1500,86.1770,142.2850]
Tci =
[227.1600, 343.0000,549.5900,665.7300,734.1300,765.2900,828.7700, 845.4700,
913.2700, 1005.2522]
Pci = [493.1000,666.4000,706.5000,616.0000,527.9000,550.6000,490.4000
,488.6000,436.9000,
375.6633]
T = 650
P = 750
Diccionario
=
{"Componente":i,"Composición":Yi,"Mi":Mi,"Tci":Tci,"Pci":Pci}
df =
pd.DataFrame(Diccionario)
if
df["Composición"].sum() == 1:
pass
else:
df["Composición"] =
df["Composición"]/df["Composición"].sum()
df["Mi*Yi"]
= df["Composición"]*df["Mi"]
df["Tpci"]
= df["Composición"]*df["Tci"]
df["Ppci"]
= df["Composición"]*df["Pci"]
Ma =
df["Mi*Yi"].sum()
YgM =
Ma/28.96
# Tpc y
Ppc para componentes pesados
df["Yi(Tc/Pc)"]
= df["Composición"]*(df["Tci"]/df["Pci"])
df["Yi(Tc/sqrt(Pc))"]
= df["Composición"]*(df["Tci"]/df["Pci"]**0.5)
df["Yi*sqrt(Tc/Pc)"]
= df["Composición"]*(df["Tci"]/df["Pci"])**0.5
#
Obtención de Ppc y Tpc
A = df["Yi(Tc/Pc)"].sum()
C =
df["Yi*sqrt(Tc/Pc)"].sum()
K =
df["Yi(Tc/sqrt(Pc))"].sum()
J =
(1/3)*A+(2/3)*(C**2)
Tpc =
(K**2)/J
Ppc =
Tpc/J
Y7C =
df.iloc[9:11,0:11]; YC7 = df.iloc[9:11,1:2]; Tc = df.iloc[9:11,3:4]; Pc =
df.iloc[9:11,4:5];CF = df.iloc[9:11,8:9]; CF1 = df.iloc[9:11,10:11]
YC7 =
np.array(YC7); Tc = np.array(Tc); Pc = np.array(Pc); CF = np.array(CF);CF1 =
np.array(CF1)
FJ =
(1/3)*CF+(2/3)*(CF**2)
EJ =
0.6081*FJ+1.1325*(FJ**2)-14.004*(FJ*YC7)+664.434*(FJ*YC7**2)
EK =
(Tc/(Pc**0.5))*(0.3129*(YC7)-4.8156*(YC7**2)+27.3751*(YC7**3))
J =
J-EJ
K =
K-EK
Tpc_S =
(K**2)/J
Ppc_S =
Tpc_S/J
Tpc_S =
float(Tpc_S); Ppc_S = float(Ppc_S)
#
CARR-KOBATASHI-BURROWS
YCO2 =
0; YH2S = 0 ; YN2 = df.iloc[0:1,1:2]; YN2 = np.array(YN2); YH2O = 0
Tpc_C =
Tpc_S-80*YCO2+130*YH2S-250*YN2
Ppc_C =
Ppc_S+440*YCO2+600*YH2S-170*YN2
Tpc_C =
float(Tpc_C); Ppc_C = float(Ppc_C)
#
SUTTON
YgHC =
(YgM-1.1767*YH2S-1.5196*YCO2-0.9672*YN2-0.622*YH2O)/(1-YH2S-YCO2-YN2-YH2O)
PpcHC =
756.8-131*YgHC-3.6*YgHC**2
TpcHC =
169.2+349.5*YgHC-74*YgHC**2
PpcM =
(1-YN2-YCO2-YH2S)*PpcHC+493*YN2+1071*YCO2+1306*YH2S+3200.1*YH2O
TpcM =
(1-YN2-YCO2-YH2S)*TpcHC+227*YN2+548*YCO2+672*YH2S+1164.9*YH2O
TpcM =
float(TpcM); PpcM = float(PpcM)
print("Masa
aparente...................................",round(Ma,4),"lbm/lbm-mol")
print("Densidad........................................",round(YgM,4),"lbm/lbm-mol")
print("Temperatura
Pseudocrítica.......................",round(Tpc,4),"°R")
print("Presión
Pseudocrítica...........................",round(Ppc,4),"psi")
print("\nCorrección
por el componente pesado método de Stewart\n")
print("Temperatura
Pseudocrítica.......................",round(Tpc_S,4),"°R")
print("Presión
Pseudocrítica...........................",round(Ppc_S,4),"psi")
print("\nCorrección
de impurezas método de Carr-Kobayashi-Burrows\n")
print("Temperatura
Pseudocrítica.......................",round(Tpc_C,4),"°R")
print("Presión
Pseudocrítica...........................",round(Ppc_C,4),"psi")
print("\nCorrección
de impurezas método de Sutton\n")
print("Temperatura
Pseudocrítica.......................",round(TpcM,4),"°R")
print("Presión
Pseudocrítica...........................",round(PpcM,4),"psi\n")
def
Brill(Tpr,Ppr):
F = 0.3106 - (0.49*(Tpr)) +
(0.1824*(Tpr)**2)
E = 9*(Tpr-1)
D = 10**F
C = 0.132-0.32*np.log10(Tpr)
B = (0.62-(0.23*Tpr))*Ppr +
((0.066/(Tpr-0.86))-0.037)*(Ppr**2) + (0.32/(10**E))*(Ppr**6)
A =
(1.39*(Tpr-0.92)**0.5)-(0.36*Tpr)-0.10
z = A + ((1-A)/np.exp(B)) +
(C*(Ppr**D))
return z
def
Papay(Tpr,Ppr):
z = 1- ((3.52*Ppr)/(10**(0.9813*Tpr)))+((0.274*(Ppr**2))/(10**(0.8157*Tpr)))
return z
def
Hall(Tpr,Ppr):
t = Tpc/(T+460)# Tpc/T
def DDF(Y,t):
A =
0.06125*t*np.exp(-1.2*(1-t)**2)
B =
(14.76*t-9.76*t**2+4.58*t**3)
C =
(90.7*t-242.2*t**2+42.4*t**3)
D = 2.18+2.82*t
Y =
-A*Ppr+((Y+(Y**2)+(Y**3)-(Y**4))/((1-Y)**3))-B*(Y**2)+C*(Y**D)
return Y
Y = 0.01
conteo = 0
error = 1
while error > 0.0000001:
dy =
((DDF(Y,t)+0.0001)-DDF(Y,t))/0.0001
yn = Y-DDF(Y,t)/dy
conteo = conteo + 1
error = (yn-Y)/yn
Y = yn
z
=(0.06125*Ppr*t*np.exp(-1.2*(1-t)**2))/Y
return z
def
Sarem(Tpr,Ppr):
x = (2*Ppr-15)/14.8
y = (2*Tpr-4)/1.9
P0X = np.array([[0.7071068],[1.224745*x],[0.7905695*(3*(x**2)-1)],[0.9354145*(5*(x**3)-3*x)],[0.265165*(35*(x**4)-30*(x**2)+3)],[0.293151*(63*(x**5)-70*(x**3)+15*x)]])
P0Y =
np.array([[0.7071068],[1.224745*y],[0.7905695*(3*(y**2)-1)],[0.9354145*(5*(y**3)-3*y)],[0.265165*(35*(y**4)-30*(y**2)+3)],[0.293151*(63*(y**5)-70*(y**3)+15*y)]])
MM =
np.array([[2.1434,0.0832,-0.0215,-0.0009,0.0043,-0.0017],[0.3313,-0.1340,0.0669,-0.0272,0.0089,-0.0022],[0.1057,-0.0504,0.0051,0.0106,-0.0073,0.0027],[0.0522,0.0443,-0.0193,0.0059,0.0015,-0.0028],[0.0197,-0.0264,0.0193,-0.0115,0.0043,-0.0081],[0.0053,0.0089,-0.0109,0.0096,-0.0060,0.0031]])
z = 0
for i in np.arange(0,6):
for j in np.arange(0,6):
z =
z+MM[i][j]*P0X[i]*P0Y[j]
return z
def
Dranchuck(Tpr,Ppr):
Z = 0.6000
A1 = 0.31506237
A2 = -1.0467099
A3 = -0.57832729
A4 = 0.53530771
A5 = -0.61232032
A6 = -0.10488813
A7 = 0.68157001
A8 = 0.68446549
error = 1
while error > 0.000000001:
Pr = 0.27*(Ppr/(Z*Tpr))
F = Z-(1+((A1+(A2/Tpr)+(A3/(Tpr**3)))*Pr)+((A4+(A5/Tpr))*(Pr**2))+((A5*A6*Pr**5)/Tpr)+A7*(1+A8*(Pr**2))*((Pr**2)/(Tpr**3))*(np.exp(-A8*Pr**2)))
G =
1+((A1+(A2/Tpr)+(A3/(Tpr**3)))*(Pr/Z))+(2*(A4+(A5/Tpr))*((Pr**2)/Z))+((5*A5*A6*Pr**5)/(Tpr*Z))+((2*A7*(Pr**2))/(Z*(Tpr**3)))*(1+(A8*(Pr**2))-((A8*(Pr**2))**2))*(np.exp(-A8*(Pr**2)))
Z2 = Z-(F/G)
error = (Z2-Z)/Z2
Z = Z2
return Z
def
DranchuckPM(Tpr,Ppr):
A1 = 0.3265
A2 = -1.07
A3 = -0.5339
A4 = 0.01569
A5 = -0.05165
A6 = 0.5475
A7 = -0.7361
A8 = 0.1844
A9 = 0.1056
A10 = 0.6134
A11 = 0.721
error = 1
Z = 0.6000
while error > 0.00000001:
Pr = (0.27*Ppr)/(Z*Tpr)
F =
Z-(1+(A1+(A2/Tpr)+(A3/(Tpr**3))+(A4/(Tpr**4))+(A5/(Tpr**5)))*Pr+(A6+(A7/Tpr)+(A8/(Tpr**2)))*(Pr**2)-A9*((A7/Tpr)+(A8/(Tpr**2)))*(Pr**5)+A10*(1+A11*(Pr**2))*((Pr**2)/(Tpr**3))*np.exp(-A11*Pr**2))
G =
1+(A1+(A2/Tpr)+(A3/(Tpr**3))+(A4/(Tpr**4))+(A5/(Tpr**5)))*(Pr/Z)+2*(A6+(A7/Tpr)+(A8/(Tpr**2)))*((Pr**2)/Z)-5*A9*((A7/Tpr)+(A8/(Tpr**2)))*((Pr**5)/Z)+((2*A10*(Pr**2))/(Z*(Tpr**3)))*(1+(A11*(Pr**2))-((A11**2)*(Pr**2)**2))*np.exp(-A11*Pr**2)
Z2 = Z-(F/G)
error = (Z2-Z)/Z2
Z = Z2
return Z
Ppr =
P/Ppc; Tpr = T/Tpc
print("\nFactor
Z Temperatura y Presión Pseudocrítica\n")
print("Factor
Z Brill..................................",round(Brill(Tpr,Ppr),4))
print("Factor
Z Papay..................................",round(Papay(Tpr,Ppr),4))
print("Factor
Z Hall...................................",round(Hall(Tpr,Ppr),4))
print("Factor
Z Sarem..................................",round(float(Sarem(Tpr,Ppr)),4))
print("Factor
Z Dranchuck..............................",round(Dranchuck(Tpr,Ppr),4))
print("Factor
Z Dranchuk, P.M. y Abou-Kassem...........",round(DranchuckPM(Tpr,Ppr),4))
Ppr =
P/Ppc_S; Tpr = T/Tpc_S
print("\nCorrección
por el componente pesado método de Stewart\n")
print("Factor
Z Brill..................................",round(Brill(Tpr,Ppr),4))
print("Factor
Z Papay..................................",round(Papay(Tpr,Ppr),4))
print("Factor
Z Hall...................................",round(Hall(Tpr,Ppr),4))
print("Factor
Z Sarem..................................",round(float(Sarem(Tpr,Ppr)),4))
print("Factor
Z Dranchuck..............................",round(Dranchuck(Tpr,Ppr),4))
print("Factor
Z Dranchuk, P.M. y Abou-Kassem...........",round(DranchuckPM(Tpr,Ppr),4))
Ppr =
P/Ppc_C; Tpr = T/Tpc_C
print("\nCorrección
de impurezas método de Carr-Kobayashi-Burrows\n")
print("Factor
Z Brill..................................",round(Brill(Tpr,Ppr),4))
print("Factor
Z Papay..................................",round(Papay(Tpr,Ppr),4))
print("Factor
Z Hall...................................",round(Hall(Tpr,Ppr),4))
print("Factor
Z Sarem..................................",round(float(Sarem(Tpr,Ppr)),4))
print("Factor
Z Dranchuck..............................",round(Dranchuck(Tpr,Ppr),4))
print("Factor
Z Dranchuk, P.M. y Abou-Kassem...........",round(DranchuckPM(Tpr,Ppr),4))
Ppr =
P/PpcM; Tpr = T/TpcM
print("\nCorrección
de impurezas método de Sutton\n")
print("Factor
Z Brill..................................",round(Brill(Tpr,Ppr),4))
print("Factor
Z Papay..................................",round(Papay(Tpr,Ppr),4))
print("Factor
Z Hall...................................",round(Hall(Tpr,Ppr),4))
print("Factor
Z Sarem..................................",round(float(Sarem(Tpr,Ppr)),4))
print("Factor
Z Dranchuck..............................",round(Dranchuck(Tpr,Ppr),4))
print("Factor
Z Dranchuk, P.M. y Abou-Kassem...........",round(DranchuckPM(Tpr,Ppr),4))
print("\n",df)
AL
CORRER EL PROGRAMA OBTENDREMOS LO SIGUIENTE:
Masa
aparente................................... 17.5464 lbm/lbm-mol
Densidad........................................
0.6059 lbm/lbm-mol
Temperatura
Pseudocrítica....................... 358.8334 °R
Presión
Pseudocrítica........................... 667.9696 psi
Corrección
por el componente pesado método de Stewart
Temperatura
Pseudocrítica....................... 358.5969 °R
Presión
Pseudocrítica........................... 667.864 psi
Corrección
de impurezas método de Carr-Kobayashi-Burrows
Temperatura
Pseudocrítica....................... 355.1469 °R
Presión
Pseudocrítica........................... 665.518 psi
Corrección
de impurezas método de Sutton
Temperatura
Pseudocrítica....................... 350.7439 °R
Presión
Pseudocrítica........................... 674.2558 psi
Factor
Z Temperatura y Presión Pseudocrítica
Factor
Z Brill.................................. 0.9521
Factor
Z Papay.................................. 0.9455
Factor
Z Hall................................... 1.0035
Factor
Z Sarem.................................. 0.9062
Factor
Z Dranchuck.............................. 0.9461
Factor
Z Dranchuk, P.M. y Abou-Kassem........... 0.9466
Factor
Z por corrección por el componente pesado método de Stewart
Factor
Z Brill.................................. 0.9522
Factor
Z Papay.................................. 0.9457
Factor
Z Hall................................... 1.0035
Factor
Z Sarem.................................. 0.9063
Factor
Z Dranchuck.............................. 0.9462
Factor
Z Dranchuk, P.M. y Abou-Kassem........... 0.9467
Factor
Z por corrección de impurezas método de Carr-Kobayashi-Burrows
Factor
Z Brill.................................. 0.9542
Factor
Z Papay.................................. 0.9477
Factor
Z Hall................................... 1.0035
Factor
Z Sarem.................................. 0.9084
Factor
Z Dranchuck.............................. 0.948
Factor
Z Dranchuk, P.M. y Abou-Kassem........... 0.9485
Factor
Z por corrección de impurezas método de Sutton
Factor
Z Brill.................................. 0.9573
Factor
Z Papay.................................. 0.951
Factor
Z Hall................................... 1.0034
Factor
Z Sarem.................................. 0.9102
Factor
Z Dranchuck.............................. 0.951
Factor
Z Dranchuk, P.M. y Abou-Kassem........... 0.9515