SharedTareas / Tarea 4.2 | Torre de enfriamiento y deshumidificador.sagewsOpen in CoCalc
Soluciones a Tareas Masa 2

Problema N° 1

Referencia: Adaptado de Ejemplo 13.9 de Coulson & Richardson, Volumen 1 (1999)

Se va a enfriar agua desde 55 °C hasta 25 °C por contacto a contracorriente con aire que entra a 23 °C con una humedad relativa de 25 %. El aire fluye a 2000 m3/(m2 h) y el agua a 950 kg/(m2 h). La resistencia a la transferencia de calor y de masa puede suponerse que se encuentra en la fase gaseosa y el coeficiente volumétrico global de transferencia de masa puede obtenerse de KY'a/ρG = 0.2 s-1.

Tomando la presión como 97.0 kPa calcule:

  1. Condiciones del aire de salida (humedad absoluta, humedad relativa, temperatura y entalpía)
  2. Altura de relleno que se requiere
  3. Relación entre el flujo de gas empleado con respecto al flujo mínimo requerido
html('<h2>Solución</h2>')

# ========== Datos del enunciado
t_L_entra       =   55        # °C
t_L_sale        =   25        # °C
t_G_entra       =   23        # °C
Y_R_entra       =    0.2500   # Pa/Pa
q_G_entra       = 2000        # m³/(m² h)
L_entra         =  950        # kg/(m² h)
K_Y_a_div_rho_G =    0.2*3600 # h^-1 <-- s^-1
p_t             =   97.0      # kPa

t, L            = var ('t, L')

# ========== Constantes y parámetros generales
M_A             =   18.01    # agua
M_B             =   28.84    # aire
t_0             =    0.01    # [°C]
R               =    8.314   # [kJ/(kmol K)]

# Kloppers, J. C., & Kröger, D. G. (2004) https://doi.org/10.1080/104077890504113
p_A_sat(t)      =  10^(10.79586*(1-273.16/(t+273.15)) + 5.02808*log(273.16/(t+273.15),10) + 1.50474*10^-4 * (1-10^(-8.29692*((t+273.15)/273.16 - 1))) + 4.2873*10^-4 * (10^(4.76955*(1-273.16/(t+273.15))) - 1) + 2.786118312) / 1000   # kPa
C_pBG(t)        =  (1045.356 - 0.3161783*(t+273.15) + 7.083814*10^-4*(t+273.15)^2 - 2.705209*10^-7*(t+273.15)^3) / 1000  # kJ/(kg K)
C_pAG(t)        =  (1360.5 + 2.31334*(t+273.15) - 2.46784*10^-10*(t+273.15)^5 + 5.91332 * 10^-13*(t+273.15)^6) / 1000    # kJ/(kg K)
C_pAL(t)        =  (8155.99 - 28.0627*(t+273.15) + 0.0511283*(t+273.15)^2 - 2.17582*10^-13 * (t+273.15)^6)/1000          # kJ/(kg K)
lambda_A(t)     =  (3483181.4 - 5862.7703*(t+273.15) + 12.139568*(t+273.15)^2 - 0.0140290431*(t+273.15)^3) / 1000        # kJ/kg
lambda_A0       =  lambda_A(0)

# ========== Funciones
C_s(t, Y)       =  C_pBG(t) + C_pAG(t)*Y
Y_s(t, p)       =  M_A*p_A_sat(t)/(M_B*(p-p_A_sat(t)))
H(t,Y)          =  C_s(t, Y) * (t-t_0) + lambda_A(t_0) * Y
H_s(t,p)        =  C_s(t, Y_s(t,p)) * (t-t_0) + lambda_A(t_0) * Y_s(t, p)
v_H(t,Y,p)      =  R*(t+273.15)/p * (1/M_B+Y/M_A)
rho_G(T, Y, p)  =  p*(M_B+M_A*Y)/(R*(T+273.15))

# ========== Condiciones de entrada
p_A_entra       =  Y_R_entra*p_A_sat(t_G_entra)
Y_entra         =  M_A/M_B * p_A_entra/(p_t-p_A_entra)
C_s_entra       =  C_s(t_G_entra, Y_entra)
H_entra         =  H(t_G_entra,Y_entra)
v_H_entra       =  v_H(t_G_entra, Y_entra, p_t)
rho_G_entra     =  rho_G(t_G_entra, Y_entra, p_t)

G_s             =  q_G_entra/v_H_entra

print "pA_entra = %8.3g kPa" %p_A_entra
print "Y'entra  = %8.3g kg/kg" %Y_entra
print "Cs_entra = %8.4g kJ/(kg K)" %C_s_entra
print "H'entra  = %8.3g kJ/kg" %H_entra
print "vH_entra = %8.3g m³/kg" %v_H_entra
print "G's      = %8.4g kg/(m² h)" %G_s

# ========== Línea de operación
H_G(t,L,Gs)     =  L*C_pAL(t)/Gs * (t-t_L_sale) + H_entra
H_sale          =  H_G(t_L_entra, L_entra, G_s)


# ========== Flujo limitante de gas
LdivG_lim       =  var('LdivG_lim')
Relac_lim(t)    =  solve(H_G(t,LdivG_lim,1) == H_s(t,p_t), LdivG_lim)[0].rhs()
sol_Rel_lim     =  find_local_minimum(Relac_lim(t), t_L_sale, t_L_entra)    # Devuelve [L(t_eq), t_eq]

G_s_min         =  L_entra/sol_Rel_lim[0]
t_eq            =  sol_Rel_lim[1]

# ========== Condiciones de salida
N               = 30 # Cantidad de etapas de cálculo
H_eq_menos_H(t) = H_s(t,p_t)-H_G(t,L_entra,G_s)

Delta_H         =  (H_sale-H_entra)/N
lista_H_G       =  [H_entra + Delta_H*i for i in range(N+1)]
lista_t_I       =  [find_root(H_G(t,L_entra,G_s) == H_g, t_L_sale-0.1, t_L_entra+0.1) for H_g in lista_H_G]
lista_t_eq      =  [find_root(H_s(t,p_t) == H_g, 0, t_L_entra+0.1) for H_g in lista_H_G]
lista_H_I       =  [H_s(t_I,p_t) for t_I in lista_t_I]
lista_t_G       =  vector(RR, N+1)

lista_t_G[0]    =  t_G_entra
if lista_t_I[0] == lista_t_G[0]:
    DH_DtG      =  10^100
else:
    DH_DtG    =  (lista_H_I[0]-lista_H_G[0])/(lista_t_I[0]-lista_t_G[0])

for i in range(1,N+1):
    lista_t_G[i]     = lista_t_I[i-1] - (lista_H_I[i-1] - lista_H_G[i])/DH_DtG
    if lista_t_G[i]  < lista_t_eq[i]:
        lista_t_G[i] = lista_t_eq[i]
    DH_DtG         = (lista_H_I[i]-lista_H_G[i])/(lista_t_I[i]-lista_t_G[i])

t_G_sale        =  lista_t_G[N]
Y_sale          =  numerical_approx(solve(H(t_G_sale,Y) == lista_H_G[N], Y)[0].rhs())
Yn_sale         =  Y_sale * M_B/M_A
y_sale          =  Yn_sale/(1+Yn_sale)

p_A_sale        =  p_t*y_sale
Y_R             =  p_A_sale/p_A_sat(t_G_sale)


# ========== Altura del relleno
# Paso f(H) --> g(t)
g(t)            =  derivative(H_G(t,L_entra, G_s)) / (H_s(t,p_t)-H_G(t,L_entra, G_s))
integral_g      =  numerical_integral(g, t_L_sale, t_L_entra)
graf_NTU        =  plot(g, xmin = t_L_sale, xmax = t_L_entra, axes_labels = ['$t$/($\degree$C)', r'$\frac{d H\'(t)}{H^{*}-H}$'], fill = 'axis', color = 'red')
N_tOG           =  integral_g[0]
H_tOG_entra     =  G_s*(1+Y_entra)/(K_Y_a_div_rho_G*rho_G_entra)
rho_G_sale      =  rho_G(t_G_sale, Y_sale, p_t)
H_tOG_sale      =  G_s*(1+Y_sale)/(K_Y_a_div_rho_G*rho_G_sale)
H_tOG_prom      =  mean([H_tOG_entra, H_tOG_sale])


graf_Hs     = plot(H_s(t,p_t), xmin = min(t_L_sale,t_G_entra) , xmax = t_L_entra+5, legend_label = "$H\'_s(t)$", axes_labels=['$t$','$H\'_G$'])
graf_Gmin   = line([(t_L_sale, H_entra),(t_L_entra, H_G(t_L_entra,Relac_lim(t_eq),1))], color = 'red', legend_label = "$\\frac{L C_{p,A,L}}{G\'_{s,min}}$")
graf_lop    = line([(t_L_sale, H_entra),(t_L_entra, H_G(t_L_entra,L_entra,G_s))], color = 'purple', legend_label = "$H\'_G (t_L)$") \
graf_HG_tG  = line(zip(lista_t_G,lista_H_G), color = 'green', legend_label = "$H\'_G (t_G)$")

graf_1      = graf_Hs + graf_lop + graf_HG_tG
graf_2      = graf_Hs + graf_lop + graf_Gmin


print "\n","a) Condiciones del aire de salida"
graf_1.show(figsize=(6,4))
graf_1.show(xmin = min(t_L_sale,t_G_entra), xmax = t_G_sale+0, ymax = H_s(t_G_sale+2,p_t), figsize=(6,4))
print "\n"
print "Y'sale   = %8.3g kg/kg" %Y_sale
print "YR       = %8.3g %%" %(Y_R*100)
print "H'sale   = %8.3g kJ/kg" %H_sale
print "tG_sale  = %8.3g °C (con %s deltas, ΔH = %.4g kJ/kg)" %(t_G_sale, N, Delta_H)

print "\n","b) Altura de relleno"
graf_NTU.show(figsize=(6,4))
print "\n","N_tOG = %s" %numerical_approx(N_tOG, digits=4)
print "H_tOG,entra = %s m" %numerical_approx(H_tOG_entra, digits=4)
print "H_c = %s m" %numerical_approx(N_tOG * H_tOG_entra, digits=4), "<--- Tomando solo H_tOG a la entrada"
print "H_tOG,sale = %s m" %numerical_approx(H_tOG_sale, digits=4)
print "H_tOG,prom = %s m" %numerical_approx(H_tOG_prom, digits=4)
print "H_c = %s m" %numerical_approx(N_tOG * H_tOG_prom, digits=4), "<--- Considerando H_tOG promedio"

print "\n","c) Relación Gs/Gsmin"
graf_2.show()
print "\n","G's/G's,mín = %s" %numerical_approx(G_s/G_s_min, digits=4), "<--- Respuesta"
print "G's,mín  = %s kg/(m² h)" %numerical_approx(G_s_min, digits=4)


########## Final del código ##########

Solución

pA_entra = 0.702 kPa Y'entra = 0.00455 kg/kg Cs_entra = 1.015 kJ/(kg K) H'entra = 34.7 kJ/kg vH_entra = 0.887 m³/kg G's = 2256 kg/(m² h) a) Condiciones del aire de salida
Y'sale = 0.0229 kg/kg YR = 86.8 % H'sale = 87.6 kJ/kg tG_sale = 28.8 °C (con 30 deltas, ΔH = 1.761 kJ/kg) b) Altura de relleno
N_tOG = 0.5450 H_tOG,entra = 2.762 m H_c = 1.505 m <--- Tomando solo H_tOG a la entrada H_tOG,sale = 2.835 m H_tOG,prom = 2.799 m H_c = 1.525 m <--- Considerando H_tOG promedio c) Relación Gs/Gsmin
G's/G's,mín = 5.224 <--- Respuesta G's,mín = 431.8 kg/(m² h)

Problema N° 2

Referencia: Adaptación de problema 7.10 de Treybal

Se tiene una corriente de 1.3 m3/s de aire, con 38.0 °C de bulbo seco y 30.0 °C de bulbo húmedo, que se desea deshumidificar llevándolo hasta una temperatura de bulbo húmedo de 15.0 °C por contacto con agua a 10.0 °C fluyendo a contracorriente en una torre rellena. Se utilizará 1.4 veces el flujo mínimo de líquido.

Calcule:

  1. Condiciones del aire de salida (humedad, entalpía, temperaturas)
  2. Temperatura del agua de salida

html('<h2>Solución</h2>')

# ========== Datos del enunciado
q_G_entra       =    1.3      # m³/s
t_G_entra       =   38        # °C
t_w_entra       =   30        # °C
t_w_sale        =   15        # °C
t_L_entra       =   10        # °C
L_div_Lmin      =    1.4

# ========== Otros datos
p_t             =  101.325    # kPa
N_Le            =    0.855

# El resto de funciones y constantes ya definidas en problema 1

# ========== Condiciones de entrada
Y_w_entra       =  Y_s(t_w_entra, p_t)
Y_entra         =  Y_w_entra - (t_G_entra - t_w_entra)*N_Le^(2/3)*C_pBG(t_G_entra)/lambda_A(t_w_entra)*(t_G_entra-t_w_entra)
C_s_entra       =  C_s(t_G_entra, Y_entra)
H_entra         =  H(t_G_entra,Y_entra)
v_H_entra       =  v_H(t_G_entra, Y_entra, p_t)
G_s             =  q_G_entra/v_H_entra

print "Y'w,entra = %8.3g kg/kg" %Y_w_entra
print "Y'entra  = %8.3g kg/kg" %Y_entra
print "Cs_entra = %8.4g kJ/(kg K)" %C_s_entra
print "H'entra  = %8.3g kJ/kg" %H_entra
print "vH_entra = %8.3g m³/kg" %v_H_entra
print "G's      = %8.4g kg/(m² h)" %G_s


# ========== Condiciones de salida
t_G_sale        =  t_w_sale
Y_sale          =  Y_s(t_w_sale, p_t)
C_s_sale        =  C_s(t_G_sale, Y_sale)
H_sale          =  H(t_G_sale,Y_sale)
v_H_entra       =  v_H(t_G_sale, Y_sale, p_t)

print ""
print "a) Condiciones de salida del aire"
print "Por el proceso de deshumidificación se sabe que el aire sale saturado"
print "t_G,sale = t_w = %.3g °C" %t_G_sale
print "Y'sale   = %8.3g kg/kg" %Y_sale
print "H'sale   = %8.3g kJ/kg" %H_sale


# ========== Línea de operación
H_G(t,L,Gs)     =  L*C_pAL(t)/Gs * (t-t_L_entra) + H_sale
t_L_max         =  find_root(H_s(t, p_t) == H_entra, t_L_entra, t_G_entra)

# ========== Flujo mínimo de líquido
LdivG_lim       =  var('LdivG_lim')
Relac_lim(t)    =  solve(H_G(t,LdivG_lim,1) == H_s(t,p_t), LdivG_lim)[0].rhs()
sol_Rel_lim     =  find_local_maximum(Relac_lim(t), t_L_entra, t_L_max)    # Devuelve [L(t_eq), t_eq]
L_min           =  sol_Rel_lim[0]*G_s
t_eq            =  sol_Rel_lim[1]

L_entra         =  L_div_Lmin * L_min
t_L_sale        =  find_root(H_G(t, L_entra, G_s) == H_entra, t_L_entra, t_L_max)


# ========== Gráfica
graf_Hs     = plot(H_s(t,p_t), [t_L_entra-1, t_L_max+1], legend_label = "$H\'_s(t)$", axes_labels=['$t$','$H\'_G$'])
graf_Lmin   = plot(H_G(t,L_min,G_s), [t_L_entra, t_L_max], color = 'red', legend_label = "$\\frac{L_{min} C_{p,A,L}}{G\'_{s}}$")
graf_lop    = plot(H_G(t,L_entra,G_s), [t_L_entra, t_L_sale], color = 'purple', legend_label = "$H\'_G (t_L)$") \
graf_P2     = graf_Hs + graf_Lmin + graf_lop

print "\n","b) Temperatura del líquido de salida"
graf_P2.show(figsize=(6,4))
print "\n"
print "L'min    = %8.3g kg/s" %L_min
print "L'       = %8.3g kg/s" %L_entra
print "t_L,sale = %8.3g °C" %t_L_sale, "<-----"


########## Final del código ##########

Solución

Y'w,entra = 0.0273 kg/kg Y'entra = 0.0034 kg/kg Cs_entra = 1.014 kJ/(kg K) H'entra = 47 kJ/kg vH_entra = 0.89 m³/kg G's = 1.461 kg/(m² h) a) Condiciones de salida del aire Por el proceso de deshumidificación se sabe que el aire sale saturado t_G,sale = t_w = 15 °C Y'sale = 0.0107 kg/kg H'sale = 42.1 kJ/kg b) Temperatura del líquido de salida
L'min = 0.255 kg/s L' = 0.357 kg/s t_L,sale = 14.8 °C <-----