Problema N° 1

Valor: 10 puntos
Fuente: Problema 16.D1 Wankat (2008)

Un sistema de permeación de gases con membrana de acetato de celulosa, se usará para purificar una corriente de dióxido de carbono y metano. Las permeabilidades son 15,0 barrer para el CO2 y 0,48 barrer para el CH4. El espesor efectivo de la membrana es tms = 1.0 µm. La operación es a 35 °C, la presión del retenido pR = 12 atm y del permeado pP = 0.2 atm (es un vacío). La alimentación contiene 15 % mol de dióxido de carbono. Suponga que los gases son ideales.

  1. Se usará un separador con membrana, bien mezclado y con una etapa. Trabaje con un corte θ = 0.32. Calcule yP, yR y el flujo de dióxido de carbono. Si se alimenta 1 kmol/h de la mezcla, calcule el área necesaria de la membrana, FP y FR.
  2. Diseñe un sistema de permeación de gases con dos etapas y flujo cruzado. Cada etapa está bien mezclada. Use la misma alimentación de la parte (a). Las presiones y la fracciones molares en la alimentación son iguales son iguales que en la parte (a). Haga que FP1 = FP2 = 0.5 FP,parte a (por lo que FR2 = FR,parte a). Calcule yP1, yP2, yR1 = yF2, yR2 y FR1. Calcule los flujos por las membranas de ambas etapas, y las áreas de membrana que se requieren.
html("<h2>Solución")

V0       =  8.314*273.15/100 *100^3   # cm³/kmol  <--  m^3/kmol
#1 barrer = 10^-10 cm^3 (STP) * cm/(cm^2 * s * cmHg)
barrer   = 10^-10 / V0 * 100^2 * 3600 * 76 # kmol cm / (m^2 h atm)

Q        =  [15 * barrer, 0.48 * barrer]
t_m      = 1.0*10^-6 * 100 # cm
T        =    35           # °C
P_R      =    12           # atm
P_P      =     0.2         # atm
y_F      =  [0.15, 0.85]

q        =  [Qi/t_m for Qi in Q] # kmol/(m^2 h atm)

N_comp   =  len(y_F)

# ========== Parte a ==========
html("<h3>Parte a) Una etapa mezcla perfecta")
F_F      =     1           # kmol/h
theta    =     0.32

F_P      =  F_F*theta      # kmol/h
F_R      =  F_F - F_P      # kmol/h

# ===== Cálculo de las fracciones de permeado por iteración del área =====
%var Am

M        =  [Am*P_R*qi/(F_F*theta+Am*P_P*qi) for qi in q]
yP       =  [M[i]*y_F[i]/(1+(M[i]-1)*theta) for i in range(N_comp)]
A_m      =  find_root(sum(yP) == 1, 0, 10^20)

print  "A_m = %.3g m²" %A_m

y_P      =  [numerical_approx(yP[i](Am=A_m), digits =4) for i in range(N_comp)]
print "y_P =", y_P
#sum(y_P)

y_R      =  [numerical_approx((y_F[i]-theta*y_P[i])/(1-theta), digits=4) for i in range(N_comp)]
print "y_R =", y_R
#sum(y_R)

print "F_P = %.4g kmol/h" %F_P
print "F_R = %.4g kmol/h" %F_R


# ========== Parte b ==========
html("<h3>Parte b) Dos etapas flujo cruzado")
print "Primera etapa"
F_P1    =  F_P2  =  F_P/2         # kmol/h
F_R1    =  F_F - F_P1
F_R2    =  F_R                    # kmol/h
theta1  =  F_P1/F_F

M1       =  [Am*P_R*qi/(F_F*theta1+Am*P_P*qi) for qi in q]
yP1      =  [M1[i]*y_F[i]/(1+(M1[i]-1)*theta1) for i in range(N_comp)]
A_m1     =  find_root(sum(yP1) == 1, 0, 10^20)

print  "A_m1 = %.3g m²" %A_m1

y_P1     =  [numerical_approx(yP1[i](Am=A_m1), digits =4) for i in range(N_comp)]
print "y_P1 =", y_P1
#sum(y_P1)

y_R1     =  [numerical_approx((y_F[i]-theta1*y_P1[i])/(1-theta1), digits=4) for i in range(N_comp)]
print "y_R1 =", y_R1
#sum(y_R1)

print "F_P1 = %.4g kmol/h" %F_P1
print "F_R1 = %.4g kmol/h" %F_R1

print "\nSegunda etapa"
theta2   =  F_P2/F_R1
M2       =  [Am*P_R*qi/(F_R1*theta2+Am*P_P*qi) for qi in q]
yP2      =  [M2[i]*y_R1[i]/(1+(M2[i]-1)*theta2) for i in range(N_comp)]
A_m2     =  find_root(sum(yP2) == 1, 0, 10^20)

print  "A_m2 = %.3g m²" %A_m2

y_P2     =  [numerical_approx(yP2[i](Am=A_m2), digits =4) for i in range(N_comp)]
print "y_P2 =", y_P2
#sum(y_P2)

y_R2     =  [numerical_approx((y_R1[i]-theta2*y_P2[i])/(1-theta2), digits=4) for i in range(N_comp)]
print "y_R2 =", y_R2
#sum(y_R2)

print "F_P2 = %.4g kmol/h" %F_P2
print "F_R2 = %.4g kmol/h" %F_R2

print "\nPermeado combinado"
y_Pb    =  [(y_P1[i]*F_P1+y_P2[i]*F_P2)/(F_P1+F_P2) for i in range(N_comp)]
print "y_Pb =",y_Pb
#sum(y_Pb)

Solución

Parte a) Una etapa mezcla perfecta

A_m = 283 m² y_P = [0.4090, 0.5910] y_R = [0.02812, 0.9719] F_P = 0.32 kmol/h F_R = 0.68 kmol/h

Parte b) Dos etapas flujo cruzado

Primera etapa A_m1 = 93 m² y_P1 = [0.6233, 0.3767] y_R1 = [0.05984, 0.9402] F_P1 = 0.16 kmol/h F_R1 = 0.84 kmol/h Segunda etapa A_m2 = 177 m² y_P2 = [0.2518, 0.7482] y_R2 = [0.01467, 0.9853] F_P2 = 0.16 kmol/h F_R2 = 0.68 kmol/h Permeado combinado y_Pb = [0.4376, 0.5624]

Problema N° 2

Valor: 10 puntos
Fuente: Problema 16.D2 Wankat (2008)

Estamos separando una corriente gaseosa por permeación de gases en un sistema perfectamente mezclado. La alimentación contiene 20 % mol de dióxido de carbono y 80 % mol de metano. Las permeabilidades de la membrana son PCO2 = 15.0 barrer y PCH4 = 0.48 barrer. La selectividad es 31.25. El espesor efectivo de la piel de membrana es tms = 1.0 μm. Se trabaja con pP = 3.3 atm, pR = 60 atm, Fent = 2 mol/s y FP/FF = 0.3. Calcule:

  1. yP , yR.
  2. El área necesaria de la membrana, en m2.
html("<h2>Solución")

V0       =  22710    # cm³/mol

barrer   = 10^-10 / V0 * 100^2 * 76 # mol cm / (m^2 s atm)

y_F      =  [0.20, 0.80]

Q        =  [15 * barrer, 0.48 * barrer]
t_m      =  1.0*10^-6 * 100 # cm
P_P      =     3.3          # atm
P_R      =    60            # atm
F_F      =     2            # mol/s
theta    =     0.3
q        =  [Qi/t_m for Qi in Q] # mol/(m^2 s atm)

N_comp   =  len(y_F)

%var Am

M        =  [Am*P_R*qi/(F_F*theta+Am*P_P*qi) for qi in q]
yP       =  [M[i]*y_F[i]/(1+(M[i]-1)*theta) for i in range(N_comp)]
A_m      =  find_root(sum(yP) == 1, 0, 10^20)

print  "A_m = %.3g m²" %A_m

y_P      =  [numerical_approx(yP[i](Am=A_m), digits =4) for i in range(N_comp)]
print "y_P =", y_P
#sum(y_P)

y_R      =  [numerical_approx((y_F[i]-theta*y_P[i])/(1-theta), digits=4) for i in range(N_comp)]
print "y_R =", y_R
#sum(y_R)

Solución

A_m = 324 m² y_P = [0.5243, 0.4757] y_R = [0.06103, 0.9390]

Problema N° 3

Valor: 10 puntos
Fuente: Problema 14.10 Seader, Henley, & Roper (2011)

Una mezcla de 60 % propileno y 40 % propano (fracciones molares) a un flujo de 45 kmol/h a 25 °C y 2.07 MPa se va a separar con una membrana de poliviniltrimetilsilano. La piel de la membrana es de 0.1 µm de espesor, y se usarán módulos en espiral con una presión de 103 kPa del lado del permeado.
Calcule el balance de materia y el área de la membrana en m² como función de la tasa de corte para (a) modelo de mezcla perfecta y (b) flujo cruzado.

Las permeabilidades son:
Propano = 2.8 barrer
Propileno = 9 barrer

Observaciones

  • 1 barrer = 10-10 cm³ (STP)/(cm² s cmHg) = 3.348*10-16 kmol m/(s m² kPa)
  • Recuerde hacer uso correcto del SI, esto implica corregir el texto original si es el caso.
  • Puede subir su tarea en formato digital (hoja de cálculo, documento de texto, PDF, imagen escaneada, etc.) o solamente presentarla en papel.
html("<h2>Solución")

barrer   =  3.348*10^-16 *3600    # kmol m/(h m² kPa)

y_F      =  [0.60, 0.40]    # mol/mol
F_F      =    45            # kmol/h
T        =    25            # °C
P_R      =    2.07*10^3     # kPa
t_m      =  0.1*10^-6       # m
P_P      =   103            # kPa
Q        =  [9 * barrer, 2.8 * barrer]
q        =  [Qi/t_m for Qi in Q] # kmol/(h m² kPa)

N_comp   =  len(y_F)

%var Am

html("<h3>Parte a) Mezcla perfecta")

datos_theta_yP0 = []
tabla    =  [["theta", "F_P/(kmol/h)", "F_R/(kmol/h)", "Am/(m^2)", "y_P", "y_R"]]
thetas   =  [0.05*i for i in range(1,20)]
for theta in thetas:
    F_P   =  F_F * theta
    F_R   =  F_F - F_P
    M     =  [Am*P_R*qi/(F_F*theta+Am*P_P*qi) for qi in q]
    yP    =  [M[i]*y_F[i]/(1+(M[i]-1)*theta) for i in range(N_comp)]
    A_m   =  find_root(sum(yP) == 1, 0, 10^20)

    y_P   =  [numerical_approx(yP[i](Am=A_m), digits =4) for i in range(N_comp)]

    y_R   =  [numerical_approx((y_F[i]-theta*y_P[i])/(1-theta), digits=4) for i in range(N_comp)]
    
    fila  =  [n(theta, digits=3), n(F_P, digits=4), n(F_R, digits=4), n(A_m, digits=4), y_P, y_R]
    tabla.append(fila)
    datos_theta_yP0.append((theta, y_P[0]))

table(tabla, header_row=True)
graf_a  = line(datos_theta_yP0, color="blue", legend_label="Mezcla perfecta", axes_labels=["$\\theta$","$y_{P1}$"])


html("<h3>Parte b) Flujo cruzado")

## Se fija un (Delta) área de membrana de cada etapa y se calcula como una etapa de mezcla perfecta.
## Para cada etapa se realiza el balance de masa en función de la (Delta) tasa de corte y se resuelve iterando.
## Para ello se definen los M_i para la etapa como funciones del Delta_theta, con estos se definen los yP locales
## que por ende son también funciones de Delta_theta, por iteración se encuentra el valor de Delta_theta que hace
## que la sumatoria de los yP locales sea 1.
## Se calcula el flujo de permeado acumulado y la tasa de corte acumulada al final de cada etapa, cuando la
## tasa de corte es igual o ligeramente superior a uno de los valores predefinidos se guardan esos datos en la
## tabla de resultados.

Delta_A     =  0.5    # m²
%var Delta_theta

j        =  0
y_R      =  [y_F]
y_P      =  [[0 for i in range(N_comp)]]
y_Pt     =  [[0 for i in range(N_comp)]]

Delta_fP =  [0]
f_R      =  [F_F]
tabla2   =  [["theta", "F_P/(kmol/h)", "F_R/(kmol/h)", "Am/(m^2)", "y_P acum", "y_R", "N_etapas"]]
datos_theta_yP0t = []

theta_t  =  0
for theta in thetas:
    while theta_t < theta:
        j += 1
        
        Delta_fPj=  f_R[j-1] * Delta_theta
        f_Rj     =  f_R[j-1] - Delta_fPj
        M        =  [Delta_A*P_R*qi/(f_R[j-1]*Delta_theta + Delta_A*P_P*qi) for qi in q]

        yPj      =  [M[i]*y_R[j-1][i]/(1+(M[i]-1)*Delta_theta) for i in range(N_comp)]
        Delta_theta_j =  find_root(sum(yPj) == 1, 0, 0.9999)

        Delta_fP.append(Delta_fPj(Delta_theta=Delta_theta_j))
        f_R.append(f_Rj(Delta_theta=Delta_theta_j))
        F_Pt     =  sum(Delta_fP)
        
        y_P.append([yPj[i](Delta_theta=Delta_theta_j) for i in range(N_comp)])
        y_R.append([numerical_approx((y_R[j-1][i]-Delta_theta_j*y_P[j][i])/(1-Delta_theta_j), digits=4) for i in range(N_comp)])
        y_Pt.append([numerical_approx((F_F*y_F[i]-f_R[j]*y_R[j][i])/F_Pt, digits=4) for i in range(N_comp)])
        
        theta_t  =  F_Pt/F_F

    fila   =  [n(theta_t, digits=3), n(F_Pt, digits=4), n(f_R[j], digits=4), n(j*Delta_A, digits=4), y_Pt[j], y_R[j], j]
    tabla2.append(fila)
    datos_theta_yP0t.append((theta_t, y_Pt[j][0]))

table(tabla2, header_row=True)
graf_b  = line(datos_theta_yP0t, color="red", legend_label="Flujo cruzado", axes_labels=["$\\theta$","$y_{P1}$"])

graf_a + graf_b



Solución

Parte a) Mezcla perfecta

theta F_P/(kmol/h) F_R/(kmol/h) Am/(m^2) y_P y_R +--------+--------------+--------------+----------+------------------+------------------+ 0.0500 2.250 42.75 14.88 [0.8142, 0.1858] [0.5887, 0.4113] 0.100 4.500 40.50 30.11 [0.8068, 0.1932] [0.5770, 0.4230] 0.150 6.750 38.25 45.73 [0.7988, 0.2012] [0.5649, 0.4351] 0.200 9.000 36.00 61.75 [0.7905, 0.2096] [0.5524, 0.4476] 0.250 11.25 33.75 78.23 [0.7816, 0.2184] [0.5395, 0.4605] 0.300 13.50 31.50 95.18 [0.7722, 0.2278] [0.5262, 0.4738] 0.350 15.75 29.25 112.7 [0.7624, 0.2376] [0.5126, 0.4874] 0.400 18.00 27.00 130.7 [0.7520, 0.2480] [0.4987, 0.5013] 0.450 20.25 24.75 149.3 [0.7411, 0.2589] [0.4845, 0.5155] 0.500 22.50 22.50 168.5 [0.7298, 0.2702] [0.4702, 0.5298] 0.550 24.75 20.25 188.4 [0.7180, 0.2820] [0.4557, 0.5442] 0.600 27.00 18.00 209.0 [0.7058, 0.2942] [0.4413, 0.5587] 0.650 29.25 15.75 230.2 [0.6933, 0.3067] [0.4268, 0.5732] 0.700 31.50 13.50 252.1 [0.6804, 0.3196] [0.4124, 0.5876] 0.750 33.75 11.25 274.7 [0.6672, 0.3328] [0.3983, 0.6017] 0.800 36.00 9.000 298.0 [0.6539, 0.3461] [0.3843, 0.6157] 0.850 38.25 6.750 322.0 [0.6405, 0.3595] [0.3707, 0.6293] 0.900 40.50 4.500 346.6 [0.6270, 0.3731] [0.3574, 0.6425] 0.950 42.75 2.250 371.9 [0.6134, 0.3866] [0.3445, 0.6554]

Parte b) Flujo cruzado

theta F_P/(kmol/h) F_R/(kmol/h) Am/(m^2) y_P acum y_R N_etapas +--------+--------------+--------------+----------+------------------+-------------------+----------+ 0.0507 2.280 42.72 15.00 [0.8171, 0.1823] [0.5884, 0.4116] 30 0.101 4.533 40.47 30.00 [0.8135, 0.1860] [0.5761, 0.4240] 60 0.150 6.757 38.24 45.00 [0.8097, 0.1901] [0.5630, 0.4371] 90 0.201 9.023 35.98 60.50 [0.8054, 0.1945] [0.5485, 0.4516] 121 0.250 11.26 33.74 76.00 [0.8008, 0.1991] [0.5330, 0.4670] 152 0.300 13.52 31.48 92.00 [0.7958, 0.2041] [0.5159, 0.4841] 184 0.351 15.81 29.19 108.5 [0.7903, 0.2096] [0.4969, 0.5031] 217 0.401 18.05 26.95 125.0 [0.7844, 0.2156] [0.4765, 0.5236] 250 0.451 20.31 24.69 142.0 [0.7778, 0.2221] [0.4537, 0.5463] 284 0.500 22.51 22.49 159.0 [0.7708, 0.2291] [0.4291, 0.5710] 318 0.550 24.76 20.24 177.0 [0.7627, 0.2372] [0.4009, 0.5992] 354 0.601 27.06 17.94 196.0 [0.7535, 0.2464] [0.3685, 0.6316] 392 0.650 29.26 15.74 215.0 [0.7435, 0.2565] [0.3333, 0.6668] 430 0.700 31.52 13.48 235.5 [0.7316, 0.2683] [0.2923, 0.7078] 471 0.750 33.76 11.24 257.0 [0.7179, 0.2821] [0.2462, 0.7541] 514 0.801 36.03 8.970 280.5 [0.7013, 0.2986] [0.1930, 0.8073] 561 0.850 38.25 6.748 305.5 [0.6819, 0.3180] [0.1356, 0.8646] 611 0.900 40.51 4.492 333.5 [0.6582, 0.3418] [0.07539, 0.9249] 667 0.950 42.76 2.237 364.5 [0.6301, 0.3698] [0.02366, 0.9769] 729