COLOFÓN AL PROBLEMA DEL TANQUE ENFRIADO

La verdad sea dicha con un poco de vergüenza: La derivada de la función tenía errores. Nos pasa a todos, creo. La verdad es que la curvatura en uno de los gráficos no me terminaba de convencer.

Derivando correctamente la expresión correcta (valga la redundancia y el énfasis) el algoritmo de Newton-Raphson no convergía o convergía por períodos muy cortos.

Ante este dilema, lo que hice fue buscar en Google el artículo (Liquid Volume in a Horizontal Cylindrical Tank, 2013), tomar la ecuación, graficarla para el tanque del cuento, y transponerla (hacer que la variable dependiente volumen se transforme en variable independiente, y vice-versa, con lo cual el programa funciona como debe, y es más sencillo porque se acorta y (¡Oh maravilla!), del gráfico transpuesto se obtiene una función polinómica de tercer grado en volumen, que calcula el nivel deseado en cada iteración del programa alrededor de 5’000,000 de veces, hasta que el tanque se llena.

El único problema es que si el radio cambia se debe cambiar la cota superior de nivel de la tabla que genera el gráfico, y la función que se obtenga cambiará también.

Se puede hacer un macro para esto, que yo no he hecho porque después de publicarlo no lo voy a utilizar, pero el gráfico es muy útil si de controlar el diesel, o Bunker recibido en una fábrica se trata, que es lo que hice hace un millón de años, antes del Excel™ y antes de los computadores.

EL PROGRAMA

La interfase de usuario es la misma del artículo original, por eso no la pongo.

El código del programa sigue.

Dim h As Double

 

Sub Tanque_Enfriado()

 

R = Worksheets(“Sheet1”).Cells(2, 3)

h = Worksheets(“Sheet1”).Cells(3, 3)

RoH2O = Worksheets(“Sheet1”).Cells(4, 3)

L = Worksheets(“Sheet1”).Cells(5, 3)

Tamb = Worksheets(“Sheet1”).Cells(6, 3)

U = Worksheets(“Sheet1”).Cells(7, 3)

ma1 = Worksheets(“Sheet1”).Cells(8, 3) ‘Temperatura que entra al tanque del proceso

ma2 = Worksheets(“Sheet1”).Cells(9, 3) ‘Temperatura que entra al tanque del intercambiador

deltat = Worksheets(“Sheet1”).Cells(10, 3) ‘intervalo de integracion

Tmax = Worksheets(“Sheet1”).Cells(11, 3)

Ta1 = Worksheets(“Sheet1”).Cells(12, 3) ‘Temperatura de ingreso agua a intercambiador de tubos aleteados

Ta2 = Worksheets(“Sheet1”).Cells(13, 3) ‘Temperatura de ingreso agua a intercambiador de tubos aleteados

Tair1 = Worksheets(“Sheet1”).Cells(14, 3) ‘Temperatura de ingreso del aire a intercambiador tubos aleteados

Tair2 = Worksheets(“Sheet1”).Cells(15, 3) ‘Temperatura de engreso del aire a intercambiador tubos aleteados

A = Worksheets(“Sheet1”).Cells(16, 3) ‘Area de transferencia de intercambiador tubos aleteados

Ca = Worksheets(“Sheet1”).Cells(17, 3) ‘Calor específico del agua Kws/KgoC

nu = Worksheets(“Sheet1”).Cells(18, 3) ‘viscosidad cinemética del aire

Dta = Worksheets(“Sheet1”).Cells(19, 3) ‘Diámetro externo Tubo aleteado

Pr = Worksheets(“Sheet1”).Cells(20, 3)

kaire = Worksheets(“Sheet1”).Cells(22, 3)

‘Inicialización de variables de control del programa

‘Limpieza de hoja

Worksheets(“Sheet1”).Range(“A29:G10000”).Clear

Fila = 30: Deltaprint = Tmax / 300: comienzo = True

empieza = True

primera_vez = True

mitad = False: Vbar = 0: hvbar = 0.001

Call Escritura_De_Titulos(Fila)

 

 

 

pi = 3.14159

 

For T = 0 To Tmax Step deltat

If T = 0 Or T >= Deltaprint Then

Call Escritura_De_Resultados(Fila, T, h, Deltaprint, Tmax, V, Tt, LMTD, Mt)

End If

Call Masa_Agua_en_tanque(pi, R, h, L, Ma, RoH2O, deltat, ma1, V, Mt, empieza, Deltaprint, mitad, Vbar, hvbar)

If Mt >= 100 Then

Call Calculo_de_Temperatura_de_Tanque(Mt, Tt, Ta1, LMTD, deltat, comienzo, ma2, U, A, Ca, Caire, nu, Dta, Pr, D, L, kaire, pi, R)

End If

Next T

Call Escritura_De_Resultados(Fila, T, h, Deltaprint, Tmax, V, Tt, LMTD, Mt)

End Sub

Sub Masa_Agua_en_tanque(pi, R, h, L, Ma, RoH2O, deltat, ma1, V, Mt, empieza, Deltaprint, mitad, Vbar, hvbar)

 

If h >= 2 * R Then

End

End If

V = V + (ma1 / 1000) * deltat ‘(Kg/s)*(1m3/1000kg)

h = hcal(V)

Mt = Mt + ma1 * deltat

End Sub

Sub Escritura_De_Titulos(Fila)

Worksheets(“Sheet1”).Cells(Fila, 1) = “T,s”

Worksheets(“Sheet1”).Cells(Fila, 2) = “h,m”

Worksheets(“Sheet1”).Cells(Fila, 3) = “V,m3”

Worksheets(“Sheet1”).Cells(Fila, 4) = “Mt,kg”

Worksheets(“Sheet1”).Cells(Fila, 5) = “Tt,oC”

Worksheets(“Sheet1”).Cells(Fila, 6) = “LMTD, oC”

Fila = Fila + 1

End Sub

 

Sub Escritura_De_Resultados(Fila, T, h, Deltaprint, Tmax, V, Tt, LMTD, Mt)

Worksheets(“Sheet1”).Cells(Fila, 1) = T

Worksheets(“Sheet1”).Cells(Fila, 2) = h

Worksheets(“Sheet1”).Cells(Fila, 3) = V

Worksheets(“Sheet1”).Cells(Fila, 4) = Mt

Worksheets(“Sheet1”).Cells(Fila, 5) = Tt ‘Temperatura del agua en el tanque de condensados, oC

Worksheets(“Sheet1”).Cells(Fila, 6) = LMTD

Deltaprint = Deltaprint + Tmax / 300

Fila = Fila + 1

End Sub

Sub Calculo_de_Temperatura_de_Tanque(Mt, Tt, Ta1, LMTD, deltat, comienzo, ma2, U, A, Ca, Caire, nu, Dta, Pr, D, L, kaire, pi, R)

At = 2 * pi * R ^ 2 + 2 * pi * R * L

‘Calculo de la LMTD

If comienzo = True Then

LMTD = ((80 – 20) – (30 – 20)) / Log((80 – 20) / (30 – 20))

MtTt = Mt * Ta1

‘Cálculo de número de Grashof

Gr = (9.81 * (80 – 20) * 0.0158 ^ 3) / (20 * nu ^ 2)

hh = kaire * (Gr * Pr) ^ 0.25 / Dta

DeltaMtTt = ((ma2 * Ta1) – ((U * A * LMTD) / Ca) – (hh * 0.001 * At * (80 – 20) / Ca)) * deltat

comienzo = False

Else

LMTD = ((Tt – 20) – (30 – 20)) / Log((Tt – 20) / (30 – 20))

Gr = (9.81 * (Tt – 20) * 0.0158 ^ 3) / (20 * nu ^ 2)

hh = kaire * (Gr * Pr) ^ 0.25 / Dta

MtTt = Mt * Tt

DeltaMtTt = ((ma2 * Ta1) – ((U * A * LMTD) / Ca) – (hh * 0.001 * At * (Tt – 20) / Ca)) * deltat

End If

MtTt = MtTt + DeltaMtTt

Tt = MtTt / Mt

End Sub

Function hcal(V)

hcal = 0.0102 * V ^ 3 – 0.0667 * V ^ 2 + 0.315 * V + 0.0238

End Function

LOS RESULTADOS

Para mejor ilustrar el argumento de la curvatura adjunto un gráfico de V versus h, y otro de h y V versus tiempo, para que ustedes aprecien como las curvaturas pueden “esconderse”

voluem-del-tanque-vs-h

Figura 1 Resultado del programa. La curva en “S” es característica

volumen-y-nivel-del-tanque-vs-tiempo

Figura 2. Resultado del mismo programa con la curvatura de h “escondida”

 

Acerca de

Professor of modeling and simulation, and process design at Escuela Politécnica Nacional, in Quito, Ecuador. . In the past I was a P4, P5, and D1 at the Organization for the Prohibition of Chemical Weapons, located in the Kingdom pf the Netherlands

Publicado en Sin categoría

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Enter your email address to follow this blog and receive notifications of new posts by email.

Únete a otros 1.771 seguidores

Categorías
Artículos y comentarios sobre modelado y simulación de plantas, y equipos de la industria química, con ejemplos
PREGUNTAS O INQUIETUDES
PUEDEN ENVIAR SUS PREGUNTAS/INQUIETUDES RESPECTO DE ARTÍCULOS DEL BLOG, O TEMAS AFINES A gasteaux@hotmail.com ASUNTO: BLOG DE INGENIERÍA QUÍMICA
A %d blogueros les gusta esto: