Contenido
Scilab ................................................................................................................................................... 2
Mtodos numricos ........................................................................................................................ 2
Asignatura: Operaciones Unitarias I.............................................................................................. 17
Problema del clculo del dimetro de tubera .......................................................................... 20
Asignatura: Termodinamica Quimica I .......................................................................................... 35
Problemas del calculo del volumen molar en ecuaciones cbicas de estado, utilizando
parmetros de la ecuacin de Van der Waals, Redlich-Kwong, Soave-Redlich-Kwong, Peng-
Robinson; y del calculo del volumen molar mediante la ecuacin de Kammerlingh-Onnes y las
correlaciones para el segundo y el tercer coeficientes del virial. ............................................. 35
Asignatura: Termodinamica Quimica II ......................................................................................... 50
Problema del calculo de la entalpa, entropa y energa de Gibbs residual de un gas puro,
mediante la ecuacin cbica genrica. ..................................................................................... 50
Composicin de equilibrio en reacciones para mezclas de gases ideales. ............................... 62
Python ............................................................................................................................................... 83
Metodos Numericos ...................................................................................................................... 83
Asignatura: Operaciones Unitarias I.............................................................................................. 97
Problema del clculo del dimetro de tubera ........................................................................ 100
Problema del clculo del flujo volumtrico a travs de una tubera ...................................... 104
Problema del clculo de los flujos volumtricos a travs de tuberas en paralelo ................. 110
Asignatura: Termodinamica Quimica I ........................................................................................ 116
Problemas del calculo del volumen molar en ecuaciones cbicas de estado, utilizando
parmetros de la ecuacin de Van der Waals, Redlich-Kwong, Soave-Redlich-Kwong, Peng-
Robinson; y del calculo del volumen molar mediante la ecuacin de Kammerlingh-Onnes y las
correlaciones para el segundo y el tercer coeficientes del virial. ........................................... 116
Asignatura: Termodinamica Quimica II ....................................................................................... 131
Problema del calculo de la entalpa, entropa y energa de Gibbs residual de un gas puro,
mediante la ecuacin cbica genrica. ................................................................................... 131
Composicin de equilibrio en reacciones para mezclas de gases ideales. ............................. 143
Scilab
Mtodos numricos
Programa RomberT
FUNCTION TrapEq(nit, numc, a, b, lfun_pri)
Extrae el primer valor de la lista lfun_pri y asigna el resultado a fun (de izquierda a derecha)
Extrae el segundo valor de la lista y asigna el resultado a lfun_sec
Extrae el tercer valor de la lista y asigna el resultado a pathDir
Calcula el espaciamiento entre cada subintervalo (trapecio) y asigna el resultado a h
Asigna a x el valor de a
Evala fun, utilizando como parmetros x, lfun_sec, numc y pathDir y asigna el resultado a
suma
FOR la variable i se encuentre entre 0 y nit - 1
Suma x a h y asigna el resultado a x
Evala fun, utilizando como parmetros x, lfun_sec, numc y pathDir, multiplica el resultado
por 2, suma el resultado a suma y asigna el resultado a suma.
END FOR
Evala fun, utilizando como parmetros b, lfun_sec, numc y pathDir, suma el resultado a
suma y asigna el resultado a suma.
Multiplica suma por h, divdelo por 2, y asigna el resultado a res
Devuelve res
END FUNCTION
FUNCTION Romberg(numc, a, b, lfun, itermax, tol)
Crea una matriz de 10 columnas y 10 filas compuesta de zeros y asigna el resultado a I
Asigna a nit el valor de 1
Evala la funcin TrapEq, utilizando como parmetros nit, numc, a, b y lfun, y asigna el
resultado a la celda de I en la columna 1, fila 1.
Asigna a iter el valor de 0
Asigna a ea el valor de 10; Multiplica tol por 100 y asigna el resultado a es
WHILE ea sea mayor o igual a es
Suma 1 a iter, y asigna el resultado iter
Eleva 2 al valor dado por iter y asigna el resultado a nit
Calcula el nmero de filas y columnas de I, asigna el resultado a fil y col, respectivamente.
IF la suma de iter + 1 es mayor que fil
Agrega una fila de zeros a I, despus de la ltima fila (de arriba a abajo)
END IF
Evala la funcin TrapEq, utilizando como parmetros nit, numc, a, b y lfun, y asigna el
resultado a la celda de I en la fila iter + 1, columna 1.
FOR la variable k se encuentre entre entre 2 y it + 1
Suma 2 - k a iter, y asigna el resultado a j
IF j es mayor que col
Agrega una columna de ceros a I, despus de la ltima columna
END IF
Utiliza la frmula de integracin de Romberg para calcular el nuevo valor de la integral
evaluada y asigna el resultado a la celda de I en la fila j, columna k.
END FOR
Calcula el error porcentual entre los valores de las celdas de I en la fila 1, columna iter +
1 y en la fila 1, columna iter, y asigna el resultado a ea.
IF it es mayor o igual que itermax
Salir del ciclo
END IF
END WHILE
Asigna el valor de la celda de I en la fila 1, columna iter + 1 a ultI
Forma una lista con los valores de ultI e I y asigna el resultado a res
Devuelve res
END FUNCTION
Programa rootBracket_3p3
Function rootBracket_3(fun, x0, param, h)
Asigna el valor de x0 a xl
Evala rootBracket_evalf, utilizando como parmetros a __comprob_f__ y xl, y asigna el
resultado a fxl
Suma h a xl y asigna el resultado a xu
Evala rootBracket_evalf, utilizando como parmetros a __comprob_f__ y xu y asigna el
resultado a fxu
Establece que el signo de fxl y el signo de fxu, son distintos y almacena el resultado en done
IF done no es cierto
IF el ABS(fxu) es mayor que ABS(fxl)
Asigna h a h
Asigna xl a xu
Guarda fxl en fxu
END IF
END IF
WHILE done no es cierto
Guarda el valor de xu en xl
Asigna a fxl, el valor de fxu
Almacena 2*h en h
Suma h a xl y guarda el resultado en xu
Evala rootBracket_evalf, utilizando como parmetros fun, param y xu
Establece que el signo de fxl y el signo de fxu, son distintos y almacena el resultado en done
IF ABS(fxu) es mayor que ABS(fxl) AND done no es cierto
Lanza un mensaje de error
END IF
END WHILE
IF xu es menor que 0
Asigna el valor de 0 a xu
ELSEIF xl es menor que 0
Asigna el valor de 0 a xl
END IF
Devuelve xl y xu
END FUNCTION
FUNCTION rootBracket_evalf(fun, param, x)
IF length(param) es distinto de 0
Crea una cadena de caracteres donde se evala fun, utilizando como parmetros a x, y a a
param, y asigna el resultado a y
ELSEIF param es igual a 0
Crea una cadena de caracteres donde se evala fun__, utilizando como parmetro a x, y
asigna el resultado a y
Ejecuta y (utilizando la funcin execstr de Scilab) y guarda el resultado en err
IF err es distinto de 0
Lanza un mensaje de error
END IF
Devuelve y
END FUNCTION
Programa [Link]
function rootNewton_cubic2(x0, f, fp, cof, dcof, tol, imax, store)
Agrega el valor de 0 como primer elemento de ve
Asigna 1 a iterv
Agrega x0 como primer elemento de vx
Extrae el elemento nmero iterv de vx y lo almacena en rv
Agrega iterv como primer elemento de vi
Asigna x0 a x
Evala rootNewton_cubic_2_evalf, utilizando como parmetros a f, cof y x, y asigna el
resultado a fx0
Asigna fx0 como primer elemento de f_x
Evala rootNewton_cubic_2_evalf, utilizando como parmetros a fp, dcof y x, y asigna el
resultado a fpv
Divide fx0 entre fpv, resta el resultado a x0, luego guarda este valor en r
Suma 1 a iterv y guarda el resultado a iterv
Agrega r a vx
Extrae el elemento nmero iterv de vx y lo almacena en rn
Agrega iterv como primer elemento de vi
Evala rootNewton_cubic2_evalf, utilizando como parmetros a f, param, y x
asigna el resultado a fr; Agrega fr como elemento de f_x
IF rn es distinto de 0
Calcula el error porcentual entre rv y rn, y lo agrega a ve
ELSE
Agrega 0 como elemento de ve
END IF
WHILE la ABS(diferencia entre r y x) sea mayor que tol AND iterv sea menor o igual que imax
Asigna el valor de r a x
Evala rootNewton_cubic2_evalf, utilizando como parmetros a f, param, y x, y
asigna el resultado a fr
Evala rootNewton_cubic2_evalf, utilizando como parmetros a f, param, y x, y
asigna el resultado a fpv
Divide fr entre fpv, resta el resultado a x0, luego guarda este valor en r
Suma 1 a iterv y guarda el resultado a iterv
Agrega r a vx
Extrae el elemento nmero iterv de vx y lo almacena en rn
Extrae el elemento nmero iterv 1 de vx y lo almacena en rv
Agrega iterv como primer elemento de vi
Agrega fr como elemento de f_x
IF rv es distinto de 0
Calcula el error porcentual entre rv y rn, y lo agrega a ve
ELSE
Extrae el elemento nmero iterv 1 de ve y lo almacena como el siguiente elemento de
ve
END IF
END WHILE
IF store es igual a %T
Crea una matriz con un nmero de filas igual a iterv y 4 columnas, y asigna el resultado
a vm
Asigna a la primera columna de vm, los elementos de vi
Asigna a la segunda columna de vm, los elementos de vx
Asigna a la tercera columna de vm, los elementos de f_x
Asigna a la cuarta columna de vm, los elementos de v_e
ELSE
Agrupa en un vector el ltimo valor de iterv (de izquierda a derecha), el ltimo valor de vx,
el ltimo valor de f_x, y el ltimo valor de ve, y asigna el resultado a vm (vector no matriz)
END IF
Devuelve vm
END FUNCTION
FUNCTION rootNewton_cubic2_evalf(f, param, x)
IF param es distinto de 0
Crea una cadena de caracteres donde se evala f, utilizando como parmetros a x, y los
elementos del segundo en delante de param, y asigna el
resultado a y
ELSEIF param es igual a 0
Crea una cadena de caracteres donde se evala f, utilizando como parmetro a x, y
asigna el resultado a y
ELSE
Lanza un mensaje de error
END
Ejecuta y (utilizando la funcin execstr de Scilab) y guarda el resultado en err
IF err es distinto de 0
Lanza un mensaje de error
END
Devuelve y
END FUNCTION
Programa [Link]
FUNCTION rootRegulaFA2(x0, h, fun, param, tol, imax, store, pathDir)
Establece la ruta del directorio de rootBracket_3p3.sci (pathDir), y asigna el resultado a
pathBracket;
Utilizando la funcin de Scilab, exec y pathBracket, llama al espacio de trabajo, a
rooBracket_3.
Evala rootBracket_3, utilizando como parmetros fun, param, x0 y h, esto genera dos
valores que son asignados a xl y xu
Agrega el valor de 0 como primer elemento de ve
Asigna 1 a iterv
Evala rootRegulaFA2_evalf, utilizando como parmetros a fun, param y xl, y asigna el
resultado a fxl
Evala rootRegulaFA2_evalf, utilizando como parmetros a fun, param y xu, y asigna el
resultado a fxu
Calcula x, utilizando a xl, xu, fxl y fxu
Evala rootRegulaFA2_evalf, utilizando como parmetros a fun, param y x, y asigna el
resultado a fx
IF el signo de fxl y el signo de fxu son iguales
Asigna x a xl
Asigna fx a fxl
ELSEIF el signo de fx y el signo de fxu son iguales
Asigna x a xu; Asigna fx a fxu
ELSE
Asigna x a xl
Asigna x a xu
END IF
Asigna iterv como primer elemento de vi
Asigna x como primer elemento de vx
Asigna fx como primer elemento de f_x
Suma 1 a iterv y asigna el resultado a iterv
IF el producto de fxl y fxu es mayor o igual a 0
Lanza un error
END IF
WHILE ABS(la diferencia de xu xl dividida por 2) es mayor que tol AND iterv es menor que
imax
Calcula x, utilizando a xl, xu, fxl y fxu
Evala rootRegulaFA2_evalf, utilizando como parmetros a fun, param y x, y asigna
el resultado a fx
IF el signo de fxl y el signo de fxu son iguales
Asigna x a xl
Asigna fx a fxl
ELSEIF el signo de fx y el signo de fxu son iguales
Asigna x a xu; Asigna fx a fxu
ELSE
Asigna x a xl
Asigna x a xu
END IF
Agrega el actual valor de iterv como nuevo elemento de vi
Agrega el actual valor de x como nuevo elemento de vx
Agrega el actual valor de fx como nuevo elemento de f_x
Extrae el elemento nmero iterv de vx y lo almacena en rn
Extrae el elemento nmero iterv 1 de vx y lo almacena en rv
IF iterv es mayor o igual a 2
IF rv es distinto de 0
Calcula el error porcentual entre rv y rn, y agrega el resultado como elemento de ve
ELSE
Extrae el elemento nmero iterv 1 de ve y lo almacena como el siguiente elemento
de ve
END IF
END IF
Suma 1 a iterv y asigna el resultado a iterv
END WHILE
IF store es igual a %T
Crea una matriz con un nmero de filas igual a iterv y 4 columnas, y asigna el resultado
a vm
Asigna a la primera columna de vm, los elementos de vi
Asigna a la segunda columna de vm, los elementos de vx
Asigna a la tercera columna de vm, los elementos de f_x
Asigna a la cuarta columna de vm, los elementos de v_e
ELSE
Agrupa en un vector el valor de iterv (de izquierda a derecha) correspondiente al ltimo
valor de vx, el ltimo valor de f_x, y el ltimo valor de ve, y asigna el resultado a vm (vector
no matriz)
END IF
Devuelve vm
END FUNCTION
FUNCTION rootRegulaFA2_evalf(fun, x, param)
IF param es distinto de 0
Crea una cadena de caracteres donde se evala fun, utilizando como parmetros a x y
param, y asigna el resultado a y
ELSEIF param es igual a 0
Crea una cadena de caracteres donde se evala fun, utilizando como
parmetro a x, y asigna el resultado a y
ELSE
Lanza un mensaje de error
END
Ejecuta y (utilizando la funcin execstr de Scilab) y guarda el resultado en err
IF err es distinto de 0
Lanza un mensaje de error
END
END FUNCTION
Programa rootRegulaFA_mod.sci
FUNCTION rootRegulaFA_mod(x0, h, fun, param, tol, imax, store, bracket)
Asigna el primer elemento de bracket a xl; Asigna el segundo elemento de bracket a xu
Agrega el valor de 0 como primer elemento de ve
Asigna 1 a iterv
Evala rootRegulaFA2_evalf, utilizando como parmetros a fun, param y xl, y asigna el
resultado a fxl
Evala rootRegulaFA2_evalf, utilizando como parmetros a fun, param y xu, y asigna el
resultado a fxu
Calcula x, utilizando a xl, xu, fxl y fxu
Evala rootRegulaFA2_evalf, utilizando como parmetros a fun, param, y x, y asigna el
resultado a fx
IF el signo de fxl y el signo de fxu son iguales
Asigna x a xl
Asigna fx a fxl
ELSEIF el signo de fx y el signo de fxu son iguales
Asigna x a xu; Asigna fx a fxu
ELSE
Asigna x a xl
Asigna x a xu
END IF
Asigna iterv como primer elemento de vi
Asigna x como primer elemento de vx
Asigna fx como primer elemento de f_x
Suma 1 a iterv y asigna el resultado a iterv
IF el producto de fxl y fxu es mayor o igual a 0
Lanza un error
END IF
Asigna 0 a iu; Asigna 0 a il
Asigna 1 a op
WHILE op es igual a 1
Calcula x, utilizando a xl, xu, fxl y fxu y asigna el resultado a r
Asigna fx a fxw
Evala rootRegulaFA_mod_evalf, utilizando como parmetros a fun, param y x, y
asigna el resultado a fx
IF el signo de fxl y el signo de fxu son iguales
Asigna x a xl
Asigna fx a fxl
Suma 1 a iu y asigna el resultado a iu
IF iu es mayor o igual a 2
Divide fxu entre 2 y asigna el resultado a fxu
END
ELSEIF el signo de fx y el signo de fxu son iguales
Asigna x a xu; Asigna fx a fxu
Suma 1 a il y asigna el resultado a il
IF il es mayor o igual a 2
Divide fxl entre 2 y asigna el resultado a fxl
END
ELSE
Asigna x a xl
Asigna x a xu
END IF
Agrega el actual valor de iterv como nuevo elemento de vi
Agrega el actual valor de x como nuevo elemento de vx
Agrega el actual valor de fx como nuevo elemento de f_x
Extrae el elemento nmero iterv de vx y lo almacena en rn
Extrae el elemento nmero iterv 1 de vx y lo almacena en rv
IF ABS(la diferencia xu xl, dividida por 2) es real
IF ABS(la diferencia xu xl, dividida por 2) es menor que tol
Calcula ABS(la diferencia de fxw fx) y asigna el resultado a dif_fx
IF dif_x es mayor que tol
Asigna 1 a op
ELSE
Asigna 2 a op
END IF
END IF
ELSE
Imprime un mensaje
Sale del ciclo WHILE
END IF
IF iterv es mayor o igual a 2
IF rv es distinto de 0
Calcula el error porcentual entre rv y rn, y agrega el resultado como elemento de ve
ELSE
Extrae el elemento nmero iterv 1 de ve y lo almacena como el siguiente elemento
de ve
END IF
END IF
Suma 1 a iterv y asigna el resultado a iterv
IF iterv es mayor que imax
Sale del ciclo
END
END WHILE
IF store es igual a %T
Crea una matriz con un nmero de filas igual a iterv y 4 columnas, y asigna el resultado
a vm
Asigna a la primera columna de vm, los elementos de vi
Asigna a la segunda columna de vm, los elementos de vx
Asigna a la tercera columna de vm, los elementos de f_x
Asigna a la cuarta columna de vm, los elementos de v_e
ELSE
Agrupa en un vector el valor de iterv (de izquierda a derecha) correspondiente al ltimo
valor de vx, el ltimo valor de f_x, y el ltimo valor de ve, y asigna el resultado a vm (vector
no matriz)
END IF
Devuelve vm
END FUNCTION
FUNCTION rootRegulaFA_mod_evalf(fun, param, x)
IF param es distinto de 0
Crea una cadena de caracteres donde se evala fun, utilizando como parmetros a x
y param, y asigna el resultado a y
ELSEIF param es igual a 0
Crea una cadena de caracteres donde se evala fun, utilizando como parmetro a x, y
asigna el resultado a y
ELSE
Lanza un mensaje de error
END
Ejecuta y (utilizando la funcin execstr de Scilab) y guarda el resultado en err
IF err es distinto de 0
Lanza un mensaje de error
END
END FUNCTION
Programa [Link]
FUNCTION fp(x, f, param)
Asigna 0.001 a h
Utilizando x como valor central y h como paso o espaciamiento entre cada elemento, crea un
vector con cinco elementos, y asigna el resultado xv.
Asigna 1 a i
WHILE i sea menor o igual que 4
Evala rootSecantePlus3A_evalf, utilizando f, el elemento nmero i de xv y param como
parmetros, y asigna el resultado a f_xv; Agrega f_xv como elemento de fxv
Suma 1 a i y asigna el resultado a i
END WHILE
Utilizando la frmula de diferencias finitas centradas de cinco puntos y fxv, calcula la
derivada de f en el punto x, y asigna el resultado a fun
Devuelve fun
END FUNCTION
FUNCTION rootSecantePlus3A(x0, fun, param, tol, imax, store)
Agrega el valor de 0 como primer elemento de ve
Asigna 1 a iterv
Agrega x0 como primer elemento de vx
Extrae el elemento nmero iterv de vx y lo almacena en rv
Suma 1 a iterv y agrega el resultado a vi
Evala rootSecantePlus3A_evalf, utilizando como parmetros fun, x0 y param y asigna el
resultado a fx
Evala fp, utilizando como parmetros a fun, x0 y param, y asigna el resultado a fx_p
Agrega fx a f_x
Asigna x0 a x
Divide fx entre fx_p, resta el resultado a x0, luego guarda este valor en r
Suma 1 a iterv y guarda el resultado a iterv
Agrega r a vx
Extrae el elemento nmero iterv de vx y lo almacena en rn
Agrega el actual valor de iterv como nuevo elemento de vi
Evala rootSecantePlus3A_evalf, utilizando como parmetros a fun, r y param, y asigna
el resultado a fx;
Evala fx_p, utilizando como parmetros a fun, r y param, y asigna el resultado a fx_p
Agrega fx como elemento de f_x
IF r es menor que 0
Asigna 0 a r
END IF
IF rn es distinto de 0
Calcula el error porcentual entre rv y rn, y lo agrega a ve
ELSE
Agrega 0 como elemento de ve
END IF
Asigna 1 a op
WHILE op es igual a 1
Asigna r a x
Divide fx entre fx_p, resta el resultado a x0, luego guarda este valor en r
Suma 1 a iterv, y asigna el resultado a iterv
Agrega r a vx
Extrae el elemento nmero iterv de vx y lo almacena en rn
Extrae el elemento nmero iterv 1 de vx y lo almacena en rv
Suma 1 a iterv y agrega el resultado a vi
Asigna fx a fxw
Evala rootSecantePlus3A_evalf, utilizando como parmetros a fun, r y param, y asigna el
resultado a fx
Evala fp, utilizando como parmetros a fun, r y param, y asigna el resultado a fx_p
Agrega fx como elemento de f_x
IF rn es distinto de 0
Calcula el error porcentual entre rv y rn, y lo agrega a ve
ELSE
Agrega el elemento nmero iterv 1 de ve como nuevo elemento de ve
END IF
IF la diferencia r x es real
IF ABS(r x) es menor que tol
Calcula ABS(la diferencia de fxw fx), y asigna el resultado a dif_fx
IF dif_fx es mayor que tol
Asigna 1 a op
ELSE
Asigna 2 a op
END IF
END IF
ELSE
Imprime un mensaje
Sale del ciclo WHILE
END IF
IF iterv es mayor o igual que imax
Sale del ciclo WHILE
END IF
END WHILE
IF store es igual a %T
Asigna a la primera columna de vm, los elementos de vi
Asigna a la segunda columna de vm, los elementos de vx
Asigna a la tercera columna de vm, los elementos de f_x
Asigna a la cuarta columna de vm, los elementos de v_e
ELSE
Agrupa en un vector el ltimo valor de iterv (de izquierda a derecha), el ltimo valor de vx,
el ltimo valor de f_x, y el ltimo valor de ve, y asigna el resultado a vm (vector no matriz)
END IF
Devuelve vm
END FUNCTION
FUNCTION rootSecantePlus3A_evalf(fun, x, param)
IF param es distinto a 0
Crea una cadena de caracteres donde se evala fun, utilizando como parmetros a x, y
param, y asigna el resultado a y
ELSEIF param es igual a 0
Crea una cadena de caracteres donde se evala fun, utilizando como parmetro a x, y
asigna el resultado a y
ELSE
Lanza un mensaje de error
END
Ejecuta y (utilizando la funcin execstr de Scilab) y guarda el resultado en err
IF err es distinto de 0
Lanza un mensaje de error
END
END FUNCTION
Asignatura: Operaciones Unitarias I
Programa f_fric.sce
FUNCTION FD_flujo_laminar(Re)
Divide 64 entre Re, y asigna el resultado a fd
return fd
END FUNCTION
FUNCTION FD_flujoturc_tub_rug_VK(D, rug)
Utilizando la ecuacin de Von Karmn, D y rug, calcula el factor de friccin para fluidos en
rgimen turbulento a travs de tuberas rugosas, y asigna el resultado a fd
Devuelve fd
END FUNCTION
FUNCTION FD_flujotr_Col(fd, rug, Re, D)
Devuelve una expresin basada en la ecuacin de Colebrook, que utiliza un valor inicial de f,
rug, Re y D. Para obtener f, esta expresin debe ser utilizada en conjunto con un mtodo de
resolucin de ecuaciones no lineales, como el mtodo de la secante
END FUNCTION
FUNCTION Reynolds(v, D, vis_c)
Multiplica v y D, el resultado lo divide por vis_c, y luego asigna el resultado final a Re
Devuelve Re
END FUNCTION
FUNCTION vel(Q, D)
Eleva D al cuadrado, esto lo multiplica por PI, luego divide 4 * Q por el resultado
anterior, y lo asigna a v.
Devuelve v
END FUNCTION
FUNCTION Q_calc(veloc, D)
Eleva D al cuadrado, esto lo multiplica por 0.25 * PI * veloc, y asigna el resultado a q
Devuelve q
END FUNCTION
FUNCTION calc_fdarcy_col(parRe, Q, D, rug, fdir, op)
Establece la ruta del directorio de [Link] (fdir), y asigna el resultado a
dir_metnum;
Utilizando la funcin de Scilab, exec y dir_metnum, llama al espacio de trabajo, a
rooSecantePlus2Ap2.
IF la longitud de parRe es igual a 2
Si es as, asigna el primer elemento de parRe a ro, y el segundo elemento de parRe a visd
IF oph es igual a 2
IF opv es igual a 1
Asigna el primer elemento de parRe a ro, y el segundo elemento de parRe a visd
Divide visd por ro, y asigna el resultado a vis_c
ELSEIF opv es igual a 2
Asigna el primer elemento de parRe a ro, y el segundo elemento de parRe a vis_c
END IF
ELSEIF oph es igual a 1
IF opv es igual a 1
Asigna el primer elemento de parRe a ro, y el segundo elemento de parRe a visd
Divide visd por ro, y asigna el resultado a vis_c
ELSEIF opv es igual a 2
Asigna parRe a vis_c
END IF
END IF
ELSE
Asigna op a opv
IF opv es igual a 1
Asigna el primer elemento de parRe a ro, y el segundo elemento de parRe a visd
Divide visd por ro, y asigna el resultado a vis_c
ELSEIF opv es igual a 2
Asigna parRe a vis_c
END IF
END IF
Evala vel, utilizando como parmetros a Q y D, y asigna el resultado a veloc.
Evala Reynolds, utilizando como parmetros a veloc, D y vis_c, y asigna el resultado a Re.
IF Re es menor de 2300
Evala FD_flujo_laminar, utilizando como parmetro a Re, y el resultado lo asigna a f1D.
Devuelve f1D
ELSEIF Re es mayor o igual a 2300
Evala FD_flujoturc_tub_rug_VK, utilizando como argumentos a D y rug, y asigna el
resultado a f0
Agrupa rug, Re y D en una lista y asigna el resultado a param_fD;
Asigna 20 a imax
Evala rootSecantePlus2A, utilizando como parmetros a f0, FD_flujotr_col, param_fD, tol
= 0.001, imax = 20 y store = %T, y asigna el resultado a vri
Evala la funcin de Scilab size, y asigna el resultado a s1;
Extrae el primer elemento de s1 y lo asigna a f1;
Extrae el valor de la celda en la fila f1, columna 2 de vri, y asigna el resultado a f1D
Devuelve a f1D
END IF
END FUNCTION
Problema del clculo del dimetro de tubera
Programa D_TS_calc.py
FUNCTION D_fun(D, parRe, L, par_calcd, Q, rug, g, oph, dir1)
Establece la ruta del directorio de [Link] (dir1), y asigna el resultado a
dir_fric;
IF op es diferente de None
Asigna el primer elemento de op a oph; Asigna el segundo elemento de op a opv
IF oph es igual a 2
IF opv es igual a 1
Asigna el primer elemento de parRe a ro, y el segundo elemento de parRe a visd
END IF
IF opv es igual a 2
Asigna el primer elemento de parRe a ro, y el segundo elemento de parRe a vis_c
END IF
Asigna el primer elemento de par_calcd a p1;
Asigna el segundo elemento de par_calcd a p2;
Asigna el tercer elemento de par_calcd a z1
Asigna el cuarto elemento de par_calcd a z2
Calcula el valor equivalente en metros de las prdidas del sistema, utilizando p1, p2, z1,
z2, ro y el balance general de energa mecnica, y asigna el resultado a hDar
ELSEIF oph es igual a 1
Asigna par_calcd a hDar
END IF
END IF
Evala la funcin calc_fdarcy_col, utilizando como parmetros a parRe, Q, D, rug, dir1, y op, y
asigna el resultado a f1D.
Evala la funcin vel, utilizando como parmetros a Q y D, y asignando el resultado a v2
Utilizando el balance general de energa mecnica, un valor inicial de D y las variables f1D, L,
v2, construye una expresin a ser resuelta junto con un mtodo de resolucin de ecuaciones
no lineales, como el mtodo de la secante.
Devuelve dicha expresin
END FUNCTION
FUNCTION calc_DTs(hDar, parRe, L, Q, rug, g, dir1, op)
Establece la ruta del directorio de [Link] (dir1), y asigna el resultado a
dir_metnum;
Asigna hDar a par_calcd
Asigna 20 a imax
Agrupa a parRe, L, par_calcd, Q, rug, g, dir1 y op en un vector y asigna el resultado a
param_hDar
Asigna 2.54E-2 a D0
Evala rootSecantePlus2A, utilizando como parmetros a D0, D_fun, param_hDar, tol =
0.001, imax, store = %T, y asigna el resultado a vri
Devuelve vri
END FUNCTION
Programa Prin_2_D_c.sce
Establece la ruta del directorio de D_TS_calc.sce, y asigna el resultado a dir2
Imprime un mensaje, pidiendo la rugosidad de la tubera, y asigna el resultado a rug
IF el dato ingresado de rug es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de rug
END IF
Imprime un mensaje, pidiendo la longitud de la tubera, y asigna el resultado a L
IF el dato ingresado de L es de punto flotante y mayor de cero
contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de L
END IF
IF hay disponibilidad del valor equivalente en metros de las prdidas del sistema
Imprime un mensaje, pidiendo este dato y asigna el resultado a prop_fl
IF el dato ingresado de prop_fl es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de prop_fl
END IF
IF hay disponibilidad de la viscosidad dinmica y de la densidad
Imprime un mensaje, pidiendo la densidad del fluido, y asigna el resultado a ro
IF el dato ingresado de ro es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de ro
END IF
Imprime un mensaje, pidiendo este dato y asigna el resultado a visd
IF el dato ingresado de visd es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de visd
END IF
Agrupa en un vector a ro y visd, y asigna el resultado a parRe
ELSEIF hay disponibilidad de viscosidad cinemtica
Imprime un mensaje, pidiendo este dato y asigna el resultado a vis_c
IF el dato ingresado de vis_c es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de vis_c
END IF
Asigna vis_c a parRe
END IF
ELSEIF no se cuenta con el dato en m equivalente a las prdidas del sistema
Crea un vector de 2 columnas y asigna el resultado a p
Pide para cada columna de p, un valor de presin en Kpa
IF los datos ingresados para p son de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de p
END IF
Multiplica p por 1000, para convertir las presiones en Kpa a Pa
Asigna el primer elemento de p a p1; Asigna el segundo elemento de p a p2
Crea un vector de 2 columnas y asigna el resultado a z
Pide para cada columna de z, un valor de nivel de altura
IF los datos ingresados para z son de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de z
END IF
Asigna el primer elemento de z a z1; Asigna el segundo elemento de z a z2
Agrupa a p1, p2, z1, z2 en un vector y asigna el resultado a prop_fl
Imprime un mensaje, pidiendo la densidad y asigna el resultado a ro
IF el dato ingresado de ro es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de ro
END IF
IF hay disponibilidad de la viscosidad dinmica
Imprime un mensaje, pidiendo la densidad y asigna el resultado a visd
IF el dato ingresado de visd es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de visd
END IF
Agrupa en un vector a ro y visd, y asigna el resultado a parRe
ELSEIF hay disponibilidad de viscosidad cinemtica
Imprime un mensaje, pidiendo este dato y asigna el resultado a vis_c
IF el dato ingresado de vis_c es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de vis_c
END IF
Agrupa en un vector a ro y vis_c y asigna el resultado a parRe
END IF
END IF
Asigna 9.8 a g
Imprime un mensaje, pidiendo el caudal del fluido, y asigna el resultado a Q
IF el dato ingresado de Q es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de Q
END IF
Agrupa a oph y opv en una tupla y asigna el resultado a op
Evala la funcin calc_DTs, utilizando como parmetros a prop_fl, parRe, L, Q, rug, g, dir1 y op,
y asigna el resultado a vri
Calcula el nmero de filas y columnas de vri, y asigna el resultado a s1;
IF la longitud de s1 es igual a 1
Extrae el segundo elemento del vector vri, y asigna el resultado a D
ELSEIF la longitud del s1 es igual a 2
Extrae el primer elemento de s1, le resta 1 y asigna el resultado a f1
Extrae el valor de la celda de vri, en la fila f1, columna 1 y asigna el resultado a D
END IF
Imprime el dimetro de la tubera
Programa Fl_vol_TubS_calc.sce
FUNCTION fl_vol_fun(v2, parRe, par_calcd, prop_tub, g, dir1, op)
Establece la ruta del directorio de [Link] (dir1), y asigna el resultado a
dir_fric;
Asigna el primer elemento de prop_tub a D
Asigna el primer elemento de prop_tub a rug;
Asigna el segundo elemento de prop_tub a L;
Asigna el tercer elemento de prop_tub a sumK
IF la longidud de op es igual a 2
Asigna el primer elemento de op a oph; Asigna el segundo elemento de op a opv
IF oph es igual a 2
IF opv es igual a 1
Asigna el primer elemento de parRe a ro, y el segundo elemento de parRe a visd
IF opv es igual a 2
Asigna el primer elemento de parRe a ro
END
Asigna el primer elemento de prop_fl a p1;
Asigna el segundo elemento de prop_fl a p2;
Asigna el tercer elemento de prop_fl a z1
Asigna el cuarto elemento de prop_fl a z2
Asigna el cuarto elemento de prop_fl a v1
Calcula el valor equivalente en metros de las prdidas del sistema, utilizando p1, p2, z1,
z2, ro y el balance general de energa mecnica, y asigna el resultado a hDar
ELSEIF oph es igual a 1
Asigna par_calcd a hDar
END IF
END IF
Evalua la funcion Q_calc, utilizando como parmetros a v2 y D y asigna el resultado a caudal
Evala la funcin calc_fdarcy_col, utilizando como parmetros a parRe, caudal, D, rug y dir1,
y op, y asigna el resultado a f1D.
Utilizando las ecuaciones para perdidas primarias y secundarias, un valor inicial de v2 y las
variables f1D, L y D, construye una expresin a ser resuelta junto con un mtodo de
resolucin de ecuaciones no lineales, como el mtodo de la secante.
Devuelve dicha expresin
END FUNCTION
FUNCTION calc_fl_vol(parRe, prop_fl, prop_tub, g, dir1, op)
Establece la ruta del directorio de [Link] (dir1), y asigna el resultado a
dir_metnum;
Asigna el primer elemento de prop_tub a D
Asigna el primer elemento de prop_tub a rug;
Asigna el segundo elemento de prop_tub a L;
Asigna el cuarto elemento de prop_tub a sumK
IF la longitud de op es igual a 2
Asigna el primer elemento de op a oph; Asigna el segundo elemento de op a opv
IF oph es igual a 2
Asigna el tercer elemento de prop_fl a z1
Asigna el cuarto elemento de prop_fl a z2
Asigna el quinto elemento de prop_fl a v1
IF z1 es mayor que z2
Estima un valor inicial de v2, utilizando z1 y z2 y asigna el resultado a v20
END IF
ELSE IF oph es igual a 1
Asigna prop_fl a hDar
Estima un valor inicial de v2, utilizando hDar, y asigna el resultado a v20
END IF
Agrupa en un vector a parRe, prop_fl, prop_tub, g, dir1, op y asigna el resultado a
param_hDar; Asigna 20 a imax
Evala la funcin rootSecantePlus2A, utilizando como parmetros a v20, fl_vol_fun,
param_hDar, tol = 0.001, imax, y store = True y asigna el resultado a vri
Devuelve vri
END FUNCTION
Programa Prin2_fl_vol.sce
Establece la ruta del directorio de Fl_vol_TS_calc.sce, y asigna el resultado a dir2
Imprime un mensaje, pidiendo la rugosidad de la tubera, y asigna el resultado a rug
IF el dato ingresado de rug es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de rug
END IF
Imprime un mensaje, pidiendo la longitud de la tubera, y asigna el resultado a L
IF el dato ingresado de L es de punto flotante y mayor de cero
contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de L
END IF
Imprime un mensaje, pidiendo la suma de los coeficientes K de perdidas secundarias, y asigna el
resultado a sumK
IF el dato ingresado de sumK es de punto flotante y mayor de cero
contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de sumK
END IF
IF hay disponibilidad del valor equivalente en metros de las prdidas del sistema
Imprime un mensaje, pidiendo este dato y asigna el resultado a prop_fl
IF el dato ingresado de prop_fl es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de prop_fl
END IF
IF hay disponibilidad de la viscosidad dinmica y de la densidad
Imprime un mensaje, pidiendo la densidad del fluido, y asigna el resultado a ro
IF el dato ingresado de ro es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de ro
END IF
Imprime un mensaje, pidiendo este dato y asigna el resultado a visd
IF el dato ingresado de visd es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de visd
END IF
Agrupa en una tupla a ro y visd, y asigna el resultado a parRe
ELSEIF hay disponibilidad de viscosidad cinemtica
Imprime un mensaje, pidiendo este dato y asigna el resultado a vis_c
IF el dato ingresado de vis_c es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de vis_c
END IF
Asigna vis_c a parRe
END IF
ELSEIF no se cuenta con el dato en m equivalente a las prdidas del sistema
Crea un vector de 2 columnas y asigna el resultado a p
Pide para cada columna de p, un valor de presin en Kpa
IF los datos ingresados para p son de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de p
END IF
Multiplica p por 1000, para convertir las presiones en Kpa a Pa
Asigna el primer elemento de p a p1; Asigna el segundo elemento de p a p2
Crea un vector de 2 columnas y asigna el resultado a z
Pide para cada columna de z, un valor de nivel de altura
IF los datos ingresados para z son de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de z
END IF
Asigna el primer elemento de z a z1; Asigna el segundo elemento de z a z2
Imprime un mensaje, pidiendo este dato y asigna el resultado a v1
IF el dato ingresado de v1 es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de v1
END IF
Agrupa a p1, p2, z1, z2 y v1 en un vector y asigna el resultado a prop_fl
Imprime un mensaje, pidiendo la densidad y asigna el resultado a ro
IF el dato ingresado de ro es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de ro
END IF
IF hay disponibilidad de la viscosidad dinmica
Imprime un mensaje, pidiendo la densidad y asigna el resultado a ro
IF el dato ingresado de ro es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de ro
END IF
Imprime un mensaje, pidiendo la viscosidad dinmica y asigna el resultado a visd
IF el dato ingresado de visd es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de visd
END IF
Agrupa en un vector a ro y visd, y asigna el resultado a parRe
ELSEIF hay disponibilidad de viscosidad cinemtica
Imprime un mensaje, pidiendo este dato y asigna el resultado a vis_c
IF el dato ingresado de vis_c es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de vis_c
END IF
Agrupa en una tupla a ro y vis_c y asigna el resultado a parRe
END IF
END IF
Asigna 9.8 a g
Imprime un mensaje, pidiendo el dimetro de la tubera, y asigna el resultado a D
IF el dato ingresado de D es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de D
END IF
Agrupa a D, rug, L, sumK en un vector y asigna el resultado a prop_tub
Agrupa a oph y opv en un vector y asigna el resultado a op
Evala la funcin calc_fl_vol, utilizando como parmetros a parRe, prop_fl, prop_tub, g, dir1 y
op, y asigna el resultado a vri
Utilizando la funcin de Scilab size, calcula la dimensin de vri y asigna el resultado a s1;
Extrae el primer elemento de s1 y lo asigna a f1;
Extrae el valor de la celda de vri, en la fila f1, columna 1 y asigna el resultado a v2
Utilizando PI, D y v2, calcula el flujo volumtrico fl_vol y lo imprime
Programa Fl_vol_par_calc5.sce
FUNCTION ftot(fd, L, D, sumK)
Calcula el coeficiente de friccin total (prdidas primarias ms secundarias) y devuelve el
resultado
END FUNCTION
FUNCTION h(fric_t, v, g)
Calcula la longitud del vector fric_t, crea un vector de ceros con igual longitud y asigna el
resultado a h_v
FOR la variable i se encuentra entre 0 y el valor numrico de la longitud del vector fric_t
Utilizando la ecuacin para el clculo de prdidas primarias y secundarias, calcula la carga
y asigna el resultado al elemento i de h_v
END FOR
Devuelve h_v
END FUNCTION
FUNCTION desvh(h_v)
Promedia los elementos de h y asigna el resultado a h_prom
Asigna 0 a desv
FOR la variable i se encuentra entre 0 y la longitud del vector h
Resta h_prom al elemento i de h, eleva al cuadrado el resultado, lo suma a desv y asigna
el resultado a desv
END FOR
Divide desv entre la longitud del vector h y lo eleva a 0.5 y devuelve el resultado
END FUNCTION
FUNCTION vel_q(g, h_prom, fric_t, D)
Calcula la longitud del vector D, crea un vector de ceros con igual longitud y asigna el
resultado a vel_qv
FOR la variable i se encuentra entre 0 y el valor numrico de la longitud del vector D
Calcula la velocidad del fluido que circula por la tubera i, y asigna el resultado al
elemento i de vel_qv
END FOR
Devuelve vel_qv
END FUNCTION
FUNCTION tablas(i, fd, veloc_v2, Qs)
Define tabs1, tabs2 y tabs3 como variables globales
IF i es igual a 1
Agrupa i, fd en un vector y asigna el resultado a tabs1
Agrupa i, v en un vector y asigna el resultado a tabs2
Agrupa i, Qs y el resultado de la suma de los elementos del vector Qs en un vector, y lo
asigna a tabs3
ELSEIF i es mayor que 1
Agrupa i y fd en un vector y el resultado lo asigna a tabs1t;
Agrupa, el antiguo valor de tabs1 y a tabs1t y asigna el resultado tabs1
Agrupa i y veloc_v2 en un vector y el resultado lo asigna a tabs1t;
Agrupa, el antiguo valor de tabs2 y a tabs2t y asigna el resultado tabs1
Agrupa i, Qs y el resultado de la suma de los elementos del vector Qs, en un vector y el
resultado lo asigna a tabs3
Agrupa, el antiguo valor de tabs3 y a tabs3t y asigna el resultado tabs3
END IF
END FUNCTION
FUNCTION Qs_calc(Di, parRe, caudal, rug, L, g, sumK, dir1, op)
Establece la ruta del directorio de f_fric.py, y asigna el resultado a dir_fric
Asigna 20 a n_max
Divide caudal entre la longitud del vector Di, y asigna el resultado a Q0
Almacena el valor de Q0 en cada uno de los elementos de un arreglo con longitud igual al
de D y asigna el resultado a Qs
FOR la variable i se encuentra entre 0 y n_max
Crea un arreglo de ceros con longitud igual al de Di y asigna el resultado a fd
Crea un arreglo de ceros con longitud igual al de Di y asigna el resultado a veloc_v1
FOR la variable j se encuentra entre 0 y la longitud de Di
Evala la funcin vel, utilizando como parmetros al elemento j de Qs y de Di y asigna
el resultado al elemento i de veloc_v1
Evala la funcin calc_fdarcy_col, utilizando a parRe, el elemento j de Qs, de D, y de
rug y tambin a dir y op, y asigna el resultado al elemento j de fd
END FOR
Evalua la funcion ftot, utilizando como parmetros a fd, L, Di, y sumK, y asigna el resultado
a fric_t
Evalua la funcion h, utilizando como parametros a fric_t, veloc_v1, y g
Calcula el promedio de los elementos de h_tub y asigna el resultado a h_prom
Evalua la funcion delh, utilizando como parametros a h_tub
Evalua la funcion vel_q, utilizando como parametros a g, h_prom, fric_t y Di
FOR la variable j se encuentra entre 0 y la longitud del vector Di
Evalua la funcion Q_calc, utilizando como parametros al elemento j de veloc_v2 y Di y
asigna el resultado al elemento j de Qs
END FOR
Suma los elementos de Qs y lo asigna a Q_t
Calcula la diferencia entre Q_t y caudal, y lo asigna a delQ
Evalua la funcion tablas, utilizando como parametros a i, fd, veloc_v2 y Qs
IF delQ es menor que 0.001 y delh es menor que 0.001
Sale del ciclo FOR
ELSE
FOR la variable j se encuentre entre 0 y la longitud de Di
Divide el elemento j de Qs entre Q_t y lo multiplica por caudal
END FOR
IF i es igual a n_max
Sale del ciclo FOR
END IF
END IF
END FOR
Devuelve Qs
END FUNCTION
Programa Prin2_tub_par.sce
Establece la ruta del directorio de Fl_vol_par_calc5.py, y asigna el resultado a dir2
Imprime un mensaje, pidiendo el nmero de tuberas, y asigna el resultado a num
IF el data ingresado de num es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de num
END IF
Crea un vector de ceros y el resultado lo asigna a D
FOR la variable i se encuentra entre 0 y num
Imprime un mensaje, pidiendo el elemento i de D
IF el elemento i de D es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de D
END IF
END FOR
Crea un vector de ceros y el resultado lo asigna a L
FOR la variable i se encuentra entre 0 y num
Imprime un mensaje, pidiendo el elemento i de L
IF el elemento i de L es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de L
END IF
END FOR
Crea un vector de ceros y el resultado lo asigna a rug
FOR la variable i se encuentra entre 0 y num
Imprime un mensaje, pidiendo el elemento i de rug
IF el elemento i de rug es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de rug
END IF
END FOR
Crea un vector de ceros y el resultado lo asigna a sumK
FOR la variable i se encuentra entre 0 y num
Imprime un mensaje, pidiendo el elemento i de sumK
IF el elemento i de sumK es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de sumK
END IF
END FOR
IF hay disponibilidad de la viscosidad dinmica y de la densidad
Imprime un mensaje, pidiendo la densidad del fluido, y asigna el resultado a ro
IF el dato ingresado de ro es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de ro
END IF
Imprime un mensaje, pidiendo este dato y asigna el resultado a visd
IF el dato ingresado de visd es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de visd
END IF
Agrupa en una tupla a ro y visd, y asigna el resultado a parRe
ELSEIF hay disponibilidad de viscosidad cinemtica
Imprime un mensaje, pidiendo este dato y asigna el resultado a vis_c
IF el dato ingresado de vis_c es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de vis_c
END IF
Asigna vis_c a parRe
END IF
Asigna 9.8 a g
Imprime un mensaje, pidiendo el caudal total del sistema de tuberas en paralelo, y asigna el
resultado a caudal
IF el dato ingresado de caudal es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de caudal
END IF
Llama a Qs_calc, utilizando como parmetros a D, parRe, caudal, rug, L, g, sumK, y dir1 y guarda
el resultado en caudales_tubs.
Imprime caudales_tubs
Asignatura: Termodinamica Quimica I
Problemas del calculo del volumen molar en ecuaciones cbicas de estado, utilizando
parmetros de la ecuacin de Van der Waals, Redlich-Kwong, Soave-Redlich-Kwong, Peng-
Robinson; y del calculo del volumen molar mediante la ecuacin de Kammerlingh-Onnes y
las correlaciones para el segundo y el tercer coeficientes del virial.
Programa [Link]
FUNCTION fcg(z, pr, tr, Bs, Cs)
Divide pr entre tr y lo asigna a facpt
Basndose en la ecuacin de estado del virial truncada hasta el tercer termino y utilizando z,
Bs, Cs y facpt, construye una expresin a ser resuelta junto con un mtodo de resolucin de
ecuaciones no lineales, como el mtodo de la secante y la guarda en fun
Devuelve fun
END FUNCTION
FUNCTION dfcg(z, pr, tr, Bs, Cs)
Divide pr entre tr y lo asigna a facpt
Calcula la derivada con respecto a z, de la ecuacin de estado del virial truncada hasta
el tercer termino y utilizando z, Bs, Cs y facpt, con el fin de utilizar el resultado como
parmetro en la funcion rootNewton_cubic2 y la guarda en fun
Devuelve fun
END FUNCTION
FUNCTION ffz(z, fact1, fact2, fact3)
Basndose en la ecuacin de estado cbica genrica y utilizando z, fact1, fact2, fact3
construye una expresin a ser resuelta junto con un mtodo de resolucin de ecuaciones no
lineales, como el mtodo de la secante y la guarda en fun
Devuelve fun
END FUNCTION
FUNCTION dffz(z, fact1, fact2)
Calcula la derivada con respecto a z, de la ecuacin de estado cbica genrica, utilizando z,
fact1 y fact2, con el fin de utilizar el resultado como parmetro en la funcion
rootNewton_cubic2 y la guarda en fun
Devuelve fun
END FUNCTION
FUNCTION fv2(t, tc, p, pc, op, opn, op_extra, r_prin, fac)
Divide t entre tc y guarda el resultado en tr
Divide p entre pc y guarda el resultado en pr
IF fac es igual a 100
SELECT opn
CASE A
Asigna 1 a alf
Asigna 1/8 a ome
Asigna 27/64 a psi
Asigna 0 a sig
Asigna 0 a epsi
CASE B
Eleva tr a -0.5 y asigna el resultado a alf
Asigna 0.08664 a ome
Asigna 0.42748 a psi
Asigna 1 a sig
Asigna 0 a epsi
END SELECT
ELSEIF fac es distinto de 100
SELECT opn
CASE C
Asigna el primer elemento de varargin a fac
Utilizando la ecuacin de estado de Soave-Redlich-Kwong, calcula la variable alfa y
asigna el resultado a alf
Asigna 0.08664 a ome
Asigna 0.42748 a psi
Asigna 1 a sig
Asigna 0 a epsi
CASE D
Asigna arg a fac
Utilizando la ecuacin de estado de Peng-Robinson, calcula la variable alfa y
asigna el resultado a alf
Asigna 0.0778 a ome
Asigna 0.45724 a psi
Eleva 2 al 0.5, le suma 1, y asigna el resultado a sig
Eleva 2 al 0.5, a 1 resta lo anterior, y asigna el resultado a epsi
CASE E
Utilizando la ecuacin de estado del virial truncada hasta el tercer termino y a tr y fac,
calcula los coeficientes Bs y Cs
Agrupa en una tupla a pr, tr, Bs y Cs y guarda el resultado en dat
Asigna dat a ddat
END SELECT
END IF
Asigna 1 a z0
Asigna 0.00001 a tol
Asigna 100 a imax
IF opn es igual a E
IF op es igual 1 OR op es igual a 3
IF op es igual a 1
Asigna 0.0005 a h
Evalua rootRegula2, utilizando como parametros a z0, fcg, dat, h, tol, imax, r_prin y
store = False y asigna el resultado a vm
Extrae el segundo elemento de vm y lo asigna a lz
ELSE
Evalua rootNewton_cubic2, utilizando como parametros a z0, fcg, dfcg, dat, ddat, tol,
imax, y store = False y asigna el resultado a vm
END IF
ELSE
Divide pr entre tr y asigna el resultado a facpt
Utilizando Bs, Cs, facpt, z0 y la ecuacin del virial truncada hasta el tercer trmino,
calcula un nuevo valor de z
Calcula el valor absoluto de la diferencia z z0 y asigna el resultado a dif
WHILE dif es mayor que 0.00001
Asigna z0 a z
Divide pr entre tr, y asigna el resultado a facpt
Utilizando Bs, Cs, facpt, z0 y la ecuacin del virial truncada hasta el tercer trmino,
calcula un nuevo valor de z
Calcula el valor absoluto de la diferencia z z0 y asigna el resultado a dif
END WHILE
Asigna z a lz
END IF
ELSE
Multiplica ome y pr, esto lo multiplica por tr y el resultado lo asigna bet
Multiplica psi y alf, esto lo divide por el producto de ome y tr, y el resultado lo asigna a q
Calcula el primer trmino de la ecuacin cbica genrica de estado, expresada en
trminos de z y lo asigna a fact1
Calcula el segundo trmino de la ecuacin cbica genrica de estado, expresada en
trminos de z y lo asigna a fact2
Calcula el tercer trmino de la ecuacin cbica genrica de estado, expresada en
trminos de z y lo asigna a fact3
Agrupa en una tupla a fact1, fact2 y fact3 y asigna el resultado a cof
Asigna 1 a z0v
IF op es igual a 1 OR op es igual a 3
IF op es igual a 1
Asigna 0.0005 a h
Evalua rootRegula2, utilizando como parametros a z0v, ffz, cof, h, tol, imax, r_prin
y store = False y asigna el resultado a vm
Extrae el segundo elemento de vm y lo asigna a zv
Asigna zv a lz
ELSE
Evalua rootNewton_cubic2, utilizando como parametros a z0v, ffz, dffz, cof, dcof, tol,
imax, y store = False y asigna el resultado a vm
Extrae el segundo elemento de vm y lo asigna a zv
Asigna zv a lz
END IF
ELSE
Utiliza la ecuacin dada en Smith, Van Ness & Abbott para el clculo de z de vapor,
mediante el mtodo de sustitucin sucesiva y el resultado lo asigna a zv
Calcula el valor absoluto de la diferencia zv zv0 y asigna el resultado a dif
Asigna 100 a itermax; Asigna 0 a it
WHILE dif es mayor que 0.00001
Asigna z0v a zv
Utiliza la ecuacin dada en Smith, Van Ness & Abbott para el clculo de z de vapor,
mediante el mtodo de sustitucin sucesiva y el resultado lo asigna a zv
Calcula el valor absoluto de la diferencia zv zv0 y asigna el resultado a dif
Suma 1 a it y el resultado lo asigna a it
IF it es mayor que itermax
Sale del ciclo WHILE
END IF
END WHILE
IF it es mayor que itermax
Asigna 0 a lz
ELSE
Asigna zv a lz
END IF
Asigna It a it1
IF op_extra es igual a 1
Asigna bet a z0l
IF op es igual a 1 OR op es igual a 3
IF op es igual a 1
Evalua rootRegula2, utilizando como parametros a z0l, ffz, cof, h, tol, imax, r_prin y
store = False y asigna el resultado a vm
Extrae el segundo elemento de vm y lo asigna a zl
Agrupa en una tupla a zv, zl, bet, q, sig y epsi
ELSE
Evalua rootNewton_cubic2, utilizando como parametros a z0l, ffz, dffz, cof, dcof, tol,
imax, y store = False y asigna el resultado a vm
Extrae el segundo elemento de vm y lo asigna a zl
Agrupa en una tupla a zv, zl, bet, q, sig y epsi
END IF
ELSE
Utiliza la ecuacin dada en Smith, Van Ness & Abbott para el clculo de z de lquido,
mediante el mtodo de sustitucin sucesiva y el resultado lo asigna a zl
Calcula el valor absoluto de la diferencia zl z0l y asigna el resultado a dif
Asigna 100 a itermax; Asigna 0 a it2
WHILE dif es mayor que 0.00001
Asigna z0l a zl
Utiliza la ecuacin dada en Smith, Van Ness & Abbott para el clculo de z de lquido,
mediante el mtodo de sustitucin sucesiva y el resultado lo asigna a zl
Calcula el valor absoluto de la diferencia z z0 y asigna el resultado a dif
Suma 1 a it2 y el resultado lo asigna a it2
IF it2 es mayor que itermax
Sale del ciclo WHILE
END IF
END WHILE
IF it1 es menor que itermax AND it2 es menor que itermax
Agrupa zv, zl, bet, q, sig y epsi en una lista y asigna el resultado a lz
ELSE
Asigna 0 a lz
END IF
END IF
END IF
END IF
Devuelve lz
END FUNCTION
Programa prueba_sat.py
FUNCTION calc_phi_lv_cubic(zcat, opn)
Asigna el primer elemento de zcat a zv
Asigna el segundo elemento de zcat a zl
Asigna el tercer elemento de zcat a bet
Asigna el cuarto elemento de zcat a q
Asigna el quinto elemento de zcat a sig
Asigna el sexto elemento de zcat a epsi
IF opn es igual a B OR opn es igual a C OR opn es igual a D
Calcula el trmino I dado en la ecuacin 6.65 b de Smith, Van Ness & Abbott, utilizando
condiciones de vapor saturado y asigna el resultado a I_v
Calcula el trmino I dado en la ecuacin 6.65 b de Smith, Van Ness & Abbott, utilizando
condiciones de lquido saturado y asigna el resultado a I_l
ELSEIF opn es igual a A
Calcula el trmino I para la ecuacin de Van der Waals, utilizando condiciones de vapor
saturado y asigna el resultado a I_v
Calcula el trmino I para la ecuacin de Van der Waals, utilizando condiciones de lquido
saturado y asigna el resultado a I_l
END IF
Calcula el coeficiente de fugacidad, a partir de la ecuacin cbica genrica, utilizando
condiciones de vapor saturado, y asigna el resultado a phi_v
Calcula el coeficiente de fugacidad, a partir de la ecuacin cbica genrica, utilizando
condiciones de lquido saturado, y asigna el resultado a phi_l
Agrupa en un vector a phi_v y phi_l y asigna el resultado a tab
Devuelve tab
END FUNCTION
FUNCTION calc_pres(t, tc, pold, pc, op, opn, op_extra, r_prin, fac, zcat0)
Establece la carpeta sub_file como el directorio actual de trabajo, y asigna el
resultado a dir1;
Utilizando dir1, llama al espacio de trabajo, a fv2.
Evala la funcin calc_phi_lv_cubic, utilizando como parmetros a zcat0 y opn, y asigna el
resultado a tab
Extrae el primer elemento de tab y lo asigna a phi_v;
Extrae el segundo elemento de tab y lo asigna a phi_l
Divide el producto pold * phi_l entre phi_v y asigna el resultado a pnew
Calcula ABS(pnew pold) y asigna el resultado a difp; Asigna pnew a pold
Asigna 0 a itp; Asigna 100 a itmax
WHILE difp es mayor que 0.0001
Evala fv2, utilizando como parmetros a t, tc, pnew, pc, op, opn, op_extra, r_prin y fac
y asigna el resultado a zcat
Evala calc_phi_lv_cubic, utilizando como parmetros a zcat y opn, y asigna el
resultado a tab
Extrae el primer elemento de tab y lo asigna a phi_v;
Extrae el segundo elemento de tab y lo asigna a phi_l
Divide el producto pold * phi_l entre phi_v y asigna el resultado a pnew
Calcula ABS(pnew pold) y asigna el resultado a difp; Asigna pnew a pold
Suma 1 a itp y asigna el resultado a itp
IF itp es mayor que itmax
Sale del ciclo WHILE
END IF
END WHILE
Devuelve pnew
END FUNCTION
FUNCTION pres_sat_cubic(t, tc, pold, pc, op, opn, op_extra, r_prin, zcat0, fac)
Establece la carpeta sub_file como el directorio actual de trabajo, y asigna el
resultado a dir1;
Utilizando dir1, llama al espacio de trabajo a fv2
IF zcat es diferente de 0
Extrae el primer elemento de zcat0 y lo asigna a zv0;
Extrae el segundo elemento de zcat0 y lo asigna a zl0
Calcula ABS(zv0 zl0), lo eleva al cuadrado y asigna el resultado a difz0
IF difz0 es menor o igual que 0.0001
Asigna 3 a zeval
WHILE zeval es diferente de 1
Multiplica 0.95 por pold y el resultado lo asigna a pnew; Asigna pnew a pold
Evala la funcin fv2, utilizando los parmetros t, tc, pnew, pc, op, opn, op_extra,
r_prin y fac y asigna el resultado a zcat0
IF zcat0 es diferente de 0
Extrae el primer elemento de zcat0 y lo asigna a zv0;
Extrae el segundo elemento de zcat0 y lo asigna a zl0;
Calcula ABS(zv0 zl0), lo eleva al cuadrado y asigna el resultado a difz0
IF difz0 es mayor que 0.0001
Asigna 1 a zeval
END IF
END IF
END WHILE
Asigna pnew a pr
ELSE
Asigna pold a pr
END IF
Evala calc_pres, utilizando como parmetros a t, tc, pr, pc, op, opn, op_extra, r_prin,
fac, zcat0 y lo asigna a pnew
ELSE
Asigna 3 a zeval
WHILE zeval es distinto de 1
Multiplica 0.95 por pold y el resultado lo asigna a pnew; Asigna pnew a pold
Evala la funcin fv2, utilizando los parmetros t, tc, pnew, pc, op, opn, op_extra,
r_prin y fac y asigna el resultado a zcat0
IF zcat0 es diferente de 0
Extrae el primer elemento de zcat0 y lo asigna a zv0;
Extrae el segundo elemento de zcat0 y lo asigna a zl0;
Calcula ABS(zv0 zl0), lo eleva al cuadrado y asigna el resultado a difz0
IF difz0 es mayor que 0.0001
Asignar 1 a zeval
END IF
END IF
END WHILE
Asigna pnew a pr
Evala calc_pres, utilizando los parmetros t, tc, pr, pc, op, opn, op_extra, r_prin, fac y
zcat0, y asigna el resultado a pnew
END IF
Devuelve pnew
END FUNCTION
FUNCTION desc_region_cubic(t, tc, p, pc, op, opn, consat, r_prin)
Establece la carpeta sub_file como el directorio actual de trabajo, y asigna el
resultado a dir1;
Utilizando dir1, llama al espacio de trabajo a fv2
Asigna 83.14 a r
IF opn es distinto de E
IF consat es igual a 1
IF t es menor que tc
Evala la funcin desc_region_cubic_first, utilizando los parmetros t, tc, p, pc, op,
opn y r_prin
END IF
ELSEIF consat es igual a 2
Evala la funcin desc_region_cubic_second, utilizando los parmetros t, tc, p, pc, op,
opn y r_prin
END IF
ELSE
Asigna 3 a op_extra; Asigna 83.14 a r
Imprime un mensaje, pidiendo el factor acntrico del fluido, y asigna el resultado a fac
IF el dato ingresado de fac es de punto flotante
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de fac
END IF
Evala fv2, utilizando los parmetros t, tc, p, pc, op, opn, op_extra, r_prin y fac, y asigna el
resultado a zcat
Multiplica zcat , r, t, esto lo divide entre p, y asigna el resultado a vol_vap
Imprime zcat y vol_vap
END IF
END FUNCTION
FUNCTION desc_region_cubic_first(t, tc, p, pc, op, opn, r_prin)
Establece la carpeta sub_file como el directorio actual de trabajo, y asigna el
resultado a dir1;
Utilizando dir1, llama al espacio de trabajo a fv2
Asigna 83.14 a r
Asigna 1 a op_extra
IF opn es igual a C OR opn es igual a D
Imprime un mensaje, pidiendo el factor acntrico del fluido, y asigna el resultado a fac
IF el dato ingresado de fac es de punto flotante
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de fac
END IF
ELSEIF opn es igual a A OR opn es igual a B
Asigna 100 a fac
END IF
Evala fv2, utilizando los parmetros t, tc, p, pc, op, opn, op_extra, r_prin y fac, y asigna el
resultado a zcat0
IF zcat0 es distinto de 0
Extrae el primer elemento de zcat0 y lo asigna a zv;
Extrae el segundo elemento de zcat0 y lo asigna a zl
Calcula ABS(zv zl), lo eleva al cuadrado y asigna el resultado a difz
IF difz es mayor que 0.0001
IF se desea los volmenes y factores de compresibilidad de liquido y vapor saturado
Calcula el volumen de vapor saturado con zv, r, t y p y lo asigna a vol_vap
Calcula el volumen de vapor saturado con zl, r, t y p y lo asigna a vol_liq
Imprime zv, zl, vol_vap y vol_liq
ELSEIF solo se desea al volumen y factor de compresibilidad de vapor saturado
Calcula el volumen de vapor saturado con zv, r, t y p y lo asigna a vol_vap
Imprime zv y vol_vap
END IF
ELSE
Imprime un mensaje, indicando que la sustancia esta en la regin de liquido comprimido
END IF
ELSE
Imprime un mensaje, indicando que la sustancia esta en la regin de liquido comprimido
END
END FUNCTION
FUNCTION desc_region_cubic_second(t, tc, p, pc, op, opn, r_prin)
Asigna 83.14 a r
Asigna 1 a op_extra
Establece la carpeta sub_file como el directorio actual de trabajo, y asigna el resultado a
dir1;
Utilizando dir1, llama al espacio de trabajo a fv2
IF op es distinto de 2
IF opn es igual a C OR opn es igual a D
Imprime un mensaje, pidiendo el factor acntrico del fluido, y asigna el resultado a fac
IF el dato ingresado de fac es de punto flotante
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de fac
END IF
ELSEIF opn es igual a A OR opn es igual a B
Asigna 100 a fac
END IF
END IF
IF t es menor que tc
Evala fv2, utilizando los parmetros t, tc, p, pc, op, opn, op_extra, r_prin y fac, y asigna
el resultado a zcat0
Extrae el primer elemento de zcat0 y lo asigna a zv;
Extrae el segundo elemento de zcat0 y lo asigna a zl
Asigna p a pold
Evalua pres_sat_cubic, utilizando como parametros a t, tc, pold, pc, op, opn, op_extra,
fac, r_prin, zcat0 y asigna el resultado a pr
Evalua calc_phi_lv_cubic, utilizando como parametros a zcat0 y opn y asigna el resultado
a tab
Extrae el primer elemento de tab y lo asigna a phi_v
Calcula el producto p*phi_v y el producto pr*phi_v, calcula la diferencia
p*phi pr*phi_v y lo asigna a dif_fug
IF dif_fug es mayor que 0.001
IF p es mayor que pr
Imprime un mensaje indicando que la sustancia se encuentra en la regin de liquido
comprimido
ELSEIF p es menor que pr
Imprime un mensaje, indicando que la sustancia se encuentra en la regin de vapor
sobrecalentado
Calcula el volumen de vapor con zv, r, t y p.
Imprime zv y vol_vap
ELSE
Calcula el volumen de vapor saturado con zv, r, t y p.
Imprime zv y vol_vap
END IF
END IF
ELSEIF op es igual a 2
Evala fv2, utilizando los parmetros t, tc, p, pc, op, opn, op_extra, r_prin y fac, y asigna
el resultado a zcat0
IF zcat es distinto de 0
Extrae el primer elemento de zcat0 y lo asigna a zv;
Extrae el segundo elemento de zcat0 y lo asigna a zl
Asigna p a pold
Evalua pres_sat_cubic, utilizando como parametros a t, tc, pold, pc, op, opn, op_extra,
fac, r_prin, zcat0 y asigna el resultado a pr
Evalua calc_phi_lv_cubic, utilizando como parametros a zcat0 y opn y asigna el
resultado a tab
Extrae el primer elemento de tab y lo asigna a phi_v
Calcula el producto p*phi_v y el producto pr*phi_v, calcula la diferencia
p*phi pr*phi_v y lo asigna a dif_fug
IF dif_fug es mayor que 0.001
IF p es mayor que pr
Imprime un mensaje indicando que la sustancia se encuentra en la regin de
liquido comprimido
ELSEIF p es menor que pr
Imprime un mensaje, indicando que la sustancia se encuentra en la regin de
vapor sobrecalentado
Calcula el volumen de vapor con zv, r, t y p.
Imprime zv y vol_vap
ELSE
IF se desea los volmenes y factores de compresibilidad de liquido y vapor
saturado
Calcula el volumen de vapor saturado con zv, r, t y p y lo asigna a vol_vap
Calcula el volumen de vapor saturado con zl, r, t y p y lo asigna a vol_liq
Imprime zv, zl, vol_vap y vol_liq
ELSEIF solo se desea al volumen y factor de compresibilidad de vapor saturado
Calcula el volumen de vapor saturado con zv, r, t y p y lo asigna a vol_vap
Imprime zv y vol_vap
END IF
END IF
END IF
ELSEIF zcat es igual a 0
Asigna p a pold
Imprime un mensaje, indicando que la sustancia se encuentra en la region de liquid
comprimido
END IF
ELSE
Asigna 2 a op_extra
Evala fv2, utilizando los parmetros t, tc, p, pc, op, opn, op_extra, r_prin y fac, y asigna
el resultado a zcat0
Calcula el volumen de vapor saturado con zv, r, t y p.
Imprime zv y vol_vap
END IF
END IF
END FUNCTION
Programa cal_fz
Establece la carpeta sub_file como el directorio actual de trabajo, y asigna el
resultado a r2;
Utilizando r2, llama al espacio de trabajo a desc_region
Imprime un mensaje, pidiendo la ecuacin cubica de estado a utilizar, y asigna el resultado a
opn
IF el dato ingresado de opn es igual a A OR opn es igual a B OR opn es igual a C OR opn es
igual a C OR opn es igual a D
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de opn
END IF
Imprime un mensaje, pidiendo el mtodo de resolucin para la ecuacin cubica del volumen, y
asigna el resultado a op
IF el dato ingresado de op es igual a 1 OR op es igual a 2 OR op es igual a 3
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de op
END IF
Imprime un mensaje, pidiendo el factor acntrico del fluido, y asigna el resultado a fac
IF el dato ingresado de t es de punto flotante o mayor de 0
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de t
END IF
IF el dato ingresado de p es de punto flotante o mayor de 0
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de p
END IF
Imprime un mensaje, requiriendo que se especifique si la temperatura y la presin
corresponden a corresponden a condiciones de saturacin y se asigna el resultado a consat
IF el dato ingresado de consat es igual a 1 OR consat es igual a 2
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de consat
END IF
IF el dato ingresado de tc es de punto flotante o mayor de 0
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de tc
END IF
IF el dato ingresado de pc es de punto flotante o mayor de 0
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de tc
END IF
Evalua la funcion desc_region_cubic, utilizando como parametros a t, tc, p, pc, op, opn, consat
y r_prin
Asignatura: Termodinamica Quimica II
Problema del calculo de la entalpa, entropa y energa de Gibbs residual de un gas puro,
mediante la ecuacin cbica genrica.
Programa [Link]
FUNCTION ffz(z, fact1, fact2, fact3)
Basndose en la ecuacin de estado cbica genrica y utilizando z, fact1, fact2, fact3
construye una expresin a ser resuelta junto con un mtodo de resolucin de ecuaciones no
lineales, como el mtodo de la secante y la guarda en fun
Devuelve fun
END FUNCTION
FUNCTION dffz(z, fact1, fact2)
Calcula la derivada con respecto a z, de la ecuacin de estado cbica genrica, utilizando z,
fact1 y fact2, con el fin de utilizar el resultado como parmetro en la funcion
rootNewton_cubic2 y la guarda en fun
Devuelve fun
END FUNCTION
FUNCTION fv2(t, tc, p, pc, opn, r_prin, fac)
Establece la carpeta Metodos numericos como el directorio actual de trabajo, y asigna el
resultado a r;
Utilizando r, llama al espacio de trabajo, a rootNewton_cubic2 y rootRegulaFA2.
Divide t entre tc y guarda el resultado en tr
Divide p entre pc y guarda el resultado en pr
IF fac es igual a 100
IF opn es igual a A
Asigna 1 a alf
Asigna 1/8 a ome
Asigna 27/64 a psi
Asigna 0 a sig
Asigna 0 a epsi
ELSEIF opn es igual a B
Eleva tr a -0.5 y asigna el resultado a alf
Asigna 0.08664 a ome
Asigna 0.42748 a psi
Asigna 1 a sig
Asigna 0 a epsi
END IF
ELSEIF fac es distinto de 100
IF opn es igual a C
Utilizando la ecuacin de estado de Soave-Redlich-Kwong, calcula la variable alfa y
asigna el resultado a alf
Asigna 0.08664 a ome
Asigna 0.42748 a psi
Asigna 1 a sig
Asigna 0 a epsi
ELSEIF opn es igual a D
Utilizando la ecuacin de estado de Peng-Robinson, calcula la variable alfa y
asigna el resultado a alf
Asigna 0.0778 a ome
Asigna 0.45724 a psi
Eleva 2 al 0.5, le suma 1, y asigna el resultado a sig
Eleva 2 al 0.5, a 1 resta lo anterior, y asigna el resultado a epsi
ELSEIF opn es igual a E
Utilizando la ecuacin de estado del virial truncada hasta el tercer termino y a tr y fac,
calcula los coeficientes Bs y Cs
Agrupa en una tupla a pr, tr, Bs y Cs y guarda el resultado en dat
END IF
END IF
Asigna 0.00001 a tol
Asigna 100 a imax
Multiplica ome y pr, esto lo multiplica por tr y el resultado lo asigna bet
Multiplica psi y alf, esto lo divide por el producto de ome y tr, y el resultado lo asigna a q
Calcula el primer trmino de la ecuacin cbica genrica de estado, expresada en
trminos de z y lo asigna a fact1
Calcula el segundo trmino de la ecuacin cbica genrica de estado, expresada en
trminos de z y lo asigna a fact2
Calcula el tercer trmino de la ecuacin cbica genrica de estado, expresada en
trminos de z y lo asigna a fact3
Agrupa en una lista a fact1, fact2 y fact3 y asigna el resultado a cof
Asigna 1 a z0v
Evalua rootNewton_cubic2, utilizando como parametros a z0v, ffz, dffz, cof, dcof, tol, imax,
store = False y asigna el resultado a vm
Extrae el segundo elemento de vm y lo asigna a zv
Agrupa en una lista a zv, zl, bet, q, sig y epsi en una lista y el resultado lo asigna a lz
IF t es menor que tc
Asigna bet a z0l
Evalua rootNewton_cubic2, utilizando como parametros a z0l, ffz, dffz, cof, dcof, tol, imax,
store = False y asigna el resultado a vm
Extrae el segundo elemento de vm y lo asigna a zl
Agrupa en una lista a zv, zl, bet, q, sig y epsi en una lista y el resultado lo asigna a lz
END IF
Devuelve lz
END FUNCTION
Programa prueba_sat.py
FUNCTION calc_phi_lv_cubic(zcat, opn)
Asigna el primer elemento de zcat a zv
Asigna el segundo elemento de zcat a zl
Asigna el tercer elemento de zcat a bet
Asigna el cuarto elemento de zcat a q
Asigna el quinto elemento de zcat a sig
Asigna el sexto elemento de zcat a epsi
IF opn es igual a B OR opn es igual a C OR opn es igual a D
Calcula el trmino I dado en la ecuacin 6.65 b de Smith, Van Ness & Abbott, utilizando
condiciones de vapor saturado y asigna el resultado a I_v
Calcula el trmino I dado en la ecuacin 6.65 b de Smith, Van Ness & Abbott, utilizando
condiciones de lquido saturado y asigna el resultado a I_l
ELSEIF opn es igual a A
Calcula el trmino I para la ecuacin de Van der Waals, utilizando condiciones de vapor
saturado y asigna el resultado a I_v
Calcula el trmino I para la ecuacin de Van der Waals, utilizando condiciones de lquido
saturado y asigna el resultado a I_l
END
Calcula el coeficiente de fugacidad, a partir de la ecuacin cbica genrica, utilizando
condiciones de vapor saturado, y asigna el resultado a phi_v
Calcula el coeficiente de fugacidad, a partir de la ecuacin cbica genrica, utilizando
condiciones de lquido saturado, y asigna el resultado a phi_l
Agrupa en un vector a phi_v y phi_l y asigna el resultado a tab
Devuelve tab
END FUNCTION
FUNCTION calc_pres(t, tc, pold, pc, opn, fac, r_prin, zcat0)
Establece la carpeta sat_condicion como el directorio actual de trabajo, y asigna el
resultado a dir1;
Utilizando dir1, llama al espacio de trabajo, a fv2.
Asigna 0 a itp; Asigna 100 a itmax
Evala la funcin calc_phi_lv_cubic, utilizando como parmetros a zcat0 y opn, y asigna el
resultado a tab
Extrae el primer elemento de tab y lo asigna a phi_v;
Extrae el segundo elemento de tab y lo asigna a phi_l
Divide el producto pold * phi_l entre phi_v y asigna el resultado a pnew
Calcula ABS(pnew pold) y asigna el resultado a difp; Asigna pnew a pold
Asigna 0 a itp; Asigna 100 a itmax
WHILE difp es mayor que 0.0001
Evala fv2, utilizando como parmetros a t, tc, pnew, pc, opn, r_prin y fac
y asigna el resultado a zcat
Evala calc_phi_lv_cubic, utilizando como parmetros a zcat y opn, y asigna el
resultado a tab
Extrae el primer elemento de tab y lo asigna a phi_v;
Extrae el segundo elemento de tab y lo asigna a phi_l
Divide el producto pold * phi_l entre phi_v y asigna el resultado a pnew
Calcula ABS(pnew pold) y asigna el resultado a difp; Asigna pnew a pold
Suma 1 a itp y asigna el resultado a itp
IF itp es mayor que itmax
Sale del ciclo WHILE
END IF
END WHILE
Devuelve pnew
END FUNCTION
FUNCTION pres_sat_cubic(t, tc, pold, pc, opn, fac, r_prin, zcat0)
Establece la carpeta sat_condicion como el directorio actual de trabajo, y asigna el
resultado a dir1;
Utilizando dir1, llama al espacio de trabajo a fv2
IF zcat es diferente de 0
Extrae el primer elemento de zcat0 y lo asigna a zv0;
Extrae el segundo elemento de zcat0 y lo asigna a zl0
Calcula ABS(zv0 zl0), lo eleva al cuadrado y asigna el resultado a difz0
IF difz0 es menor o igual que 0.0001
Asigna 3 a zeval
WHILE zeval es diferente de 1
Multiplica 0.95 por pold y el resultado lo asigna a pnew; Asigna pnew a pold
Evala la funcin fv2, utilizando los parmetros t, tc, pnew, pc, opn, r_prin y fac, y
asigna el resultado a zcat0
IF zcat0 es diferente de 0
Extrae el primer elemento de zcat0 y lo asigna a zv0;
Extrae el segundo elemento de zcat0 y lo asigna a zl0;
Calcula ABS(zv0 zl0), lo eleva al cuadrado y asigna el resultado a difz0
IF difz0 es mayor que 0.0001
Asigna 1 a zeval
END IF
END IF
END WHILE
Asigna pnew a pr
ELSE
Asigna pold a pr
END IF
Evala calc_pres, utilizando como parmetros a t, tc, pr, pc, opn, r_prin, fac y zcat0 y
lo asigna a pnew
ELSE
Asigna 3 a zeval
WHILE zeval es distinto de 1
Multiplica 0.95 por pold y el resultado lo asigna a pnew; Asigna pnew a pold
Evala la funcin fv2, utilizando los parmetros t, tc, pnew, pc, opn, r_prin y fac y
asigna el resultado a zcat0
IF zcat0 es diferente de 0
Extrae el primer elemento de zcat0 y lo asigna a zv0;
Extrae el segundo elemento de zcat0 y lo asigna a zl0;
Calcula ABS(zv0 zl0), lo eleva al cuadrado y asigna el resultado a difz0
IF difz0 es mayor que 0.0001
Asignar 1 a zeval
END IF
END IF
END WHILE
Asigna pnew a pr
Evala calc_pres, utilizando los parmetros t, tc, pr, pc, opn, r_prin, fac y zcat0, y asigna
el resultado a pnew
END IF
Devuelve pnew
END FUNCTION
FUNCTION desc_region_cubic(t, tc, p, pc, op, opn, consat, r_prin)
Establece la carpeta sub_file como el directorio actual de trabajo, y asigna el
resultado a dir1;
Utilizando dir1, llama al espacio de trabajo a fv2
IF opn es igual a C OR opn es igual a D
Imprime un mensaje, pidiendo el factor acntrico del fluido, y asigna el resultado a fac
IF el dato ingresado de fac es de punto flotante
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de fac
END IF
ELSEIF opn es igual a A OR opn es igual a B
Asigna 100 a fac
END IF
Evalua fv2, utilizando como parametros a t, tc, p, pc, opn, r_prin y fac y asigna el
resultado a zcat0
IF t es menor que tc
Asigna p a pold
Evalua pres_sat_cubic, utilizando como parametros a t, tc, pold, pc, opn, fac, r_prin,
zcat0 y asigna el resultado a pr
Evalua calc_phi_lv_cubic, utilizando como parametros a zcat0 y opn y asigna el resultado
a tab
Extrae el primer elemento de tab y lo asigna a phi_v
Calcula el producto p*phi_v y el producto pr*phi_v, calcula la diferencia
p*phi pr*phi_v y lo asigna a dif_fug
IF dif_fug es mayor que 0.001
IF p es mayor que pr
Imprime un mensaje indicando que la sustancia se encuentra en la regin de liquido
comprimido
Asigna 0 a lz
ELSEIF p es menor que pr
Imprime un mensaje, indicando que la sustancia se encuentra en la regin de vapor
Sobrecalentado
Agrupa a zcat0 y fac en un vector, y la asigna a lz
ELSE
Agrupa a zcat0 y fac en un vector, y la asigna a lz
END IF
END IF
ELSE
Agrupa a zcat0 y fac en una vector, y la asigna a lz
END IF
Devuelve lz
END FUNCTION
Programa Hr_Sr_calc.py
FUNCTION l_alf_evalf(lf_alf, tr, param)
Evala lf_alf, utilizando como parametros a tr y param y asigna el resultado a y
Devuelve y
END FUNCTION
FUNCTION fp(tr, fun_alf, param)
Asigna 0.001 a h
Utilizando tr como valor central y h como paso o espaciamiento entre cada elemento, crea un
vector con cinco elementos, y asigna el resultado trv.
Crea un vector vaco y asigna el resultado a fxv
Asigna 0 a i
WHILE i sea menor o igual que 3
Evala l_alf_evalf, utilizando fun_alf, el elemento nmero i de trv y param como
parmetros, y asigna el resultado a f_xv; Agrega f_xv como elemento de fxv
Suma 1 a i y asigna el resultado a i
END WHILE
Utilizando la frmula de diferencias finitas centradas de cinco puntos y fxv, calcula la derivada
de f en x, y asigna el resultado a fun
END FUNCTION
FUNCTION ln_alf(tr, opn, fac)
IF fac es igual a 100
IF opn es igual a A
Asigna 1 a alf
ELSEIF opn es igual B
Eleva tr a 0.5 y asigna el resultado a alf
END
ELSE
IF opn es igual a C
Utilizando la ecuacin de estado de Soave-Redlich-Kwong, calcula la variable alfa y
asigna el resultado a alf
ELSEIF opn es igual a D
Utilizando la ecuacin de estado de Peng-Robinson, calcula la variable alfa y
asigna el resultado a alf
END IF
END IF
Calcula el logaritmo natural de alf y lo asigna a lf
Devuelve lf
END FUNCTION
FUNCTION calcl(opn, zv, bet, sig, epsi)
IF opn es igual a B OR opn es igual a C OR opn es igual a D
Calcula el trmino I dado en la ecuacin 6.65 b de Smith, Van Ness & Abbott, utilizando
condiciones de vapor saturado y asigna el resultado a fI
ELSEIF opn es igual a A
Calcula el trmino I para la ecuacin de Van der Waals, utilizando condiciones de vapor
saturado y asigna el resultado a fI
END IF
END FUNCTION
FUNCTION calcHr(zv, dlalf, t, tc, q, l, Rcons)
Divide t entre tc y lo asigna a tr
Calcula la entalpia residual dada en la ecuacin 6.67 de Smith, Van Ness & Abbott,
utilizando a zv, dlalf, q, I, Rcons y t, y asigna el resultado a Hr
Devuelve Hr
END FUNCTION
FUNCTION calcSr(zv, dlalf, t, tc, bet, q, l, Rcons)
Divide t entre tc y lo asigna a tr
Calcula la entropia residual dada en la ecuacin 6.68 de Smith, Van Ness & Abbott,
utilizando a zv, dlalf, bet, q, I, Rcons y t, y asigna el resultado a Sr
Devuelve Sr
END FUNCTION
FUNCTION Hr_Sr_imp(lz, t, tc, p, pc, opn)
IF lz es diferente de 0
Asigna el segundo elemento de lz a fac
Agrupa en una tupla a opn y fac y asigna el resultado a param
Asigna el primer elemento de lz a zcat
IF la longitud de lz es igual a 5
Asigna el primer elemento de zcat a zv;
Asigna el segundo elemento de zcat a bet;
Asigna el tercer elemento de zcat a q;
Asigna el cuarto elemento de zcat a sig;
Asigna el quinto elemento de zcat a epsi;
ELSEIF la longitud de lz es igual a 6
Asigna el primer elemento de zcat a zv;
Asigna el tercer elemento de zcat a bet;
Asigna el cuarto elemento de zcat a q;
Asigna el quinto elemento de zcat a sig;
Asigna el sexto elemento de zcat a epsi;
END IF
Divide t entre tc y asigna el resultado a tr
Evalua calcl, utilizando como parametros a opn, zv, bet, sig y epsi, y asigna el resultado a I
Evalua dlalf, utilizando como parametros a tr, ln_alf y param
Asigna 8.314 a Rcons
Evalua calcHr, utilizando como parametros a zv, dlalf, t, tc, q, I y Rcons
Evalua calcSr, utilizando como parametros a zv, dlalf, t, tc, bet, q, I y Rcons
Agrupa en un vector a Hr y Sr, y asigna el resultado a res
ELSE
Asigna 0 a res
END IF
Devuelve res
END FUNCTION
Programa Hr_Sr_prin.py
Establece la ruta absoluta del directorio de desc_region_cubic.py, y asigna el resultado a
r_prin;
Utilizando r_prin, establece la ruta del directorio de desc_region_cubic.py, y asigna el
resultado a r2
Utilizando r2, llama al espacio de trabajo a desc_region_cubic
Utilizando r_prin, establece la ruta del directorio de desc_region_cubic.py, y asigna el
resultado a r3
Utilizando r3, llama al espacio de trabajo a Hr_Sr_imp
Imprime un mensaje, pidiendo la ecuacin cubica de estado a utilizar, y asigna el resultado a
opn
IF el dato ingresado de opn es igual a A OR opn es igual a B OR opn es igual a C OR opn
es igual a C OR opn es igual a D
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de opn
END IF
Imprime un mensaje, pidiendo la temperatura, y asigna el resultado a t
IF el dato ingresado de t es de punto flotante o mayor de 0
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de t
END IF
Imprime un mensaje, pidiendo la temperatura, y asigna el resultado a p
IF el dato ingresado de p es de punto flotante o mayor de 0
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de p
END IF
Imprime un mensaje, pidiendo la temperatura critica, y asigna el resultado a tc
IF el dato ingresado de tc es de punto flotante o mayor de 0
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de tc
END IF
Imprime un mensaje, pidiendo la presin critica, y asigna el resultado a pc
IF el dato ingresado de pc es de punto flotante o mayor de 0
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de pc
END IF
Evalua a desc_region_cubic, utilizando como parametros a t, tc, p, pc, opn y r_prin y asigna el
resultado a lz
Evalua a Hr_Sr_imp, utilizando como parametros a lz, t, tc, p, pc y opn y asigna el resultado a
res
IF res es distinto de 0
Asigna el primer elemento de res a Hr; Asigna el segundo elemento de res a Sr
ELSE
Imprime un mensaje indicando se introduzcan nuevas condiciones de termperatura y presin
END IF
Composicin de equilibrio en reacciones para mezclas de gases ideales.
Programa CalcDH_DS.py
FUNCTION cpH_SVN(t, l1)
Extrae el primer elemento de l1 y lo asigna a ccp
Extrae el segundo elemento de l1 y lo asigna a Rcons
Extrae el primer elemento de ccp y lo asigna a A
Extrae el segundo elemento de ccp y lo asigna a B
Extrae el tercer elemento de ccp y lo asigna a C
Extrae el cuarto elemento de ccp y lo asigna a D
Calcula la capacidad calorfica de gas ideal, con los factores A, B, C y D y la temperatura t,
segn la ecucion dada por Smith, Van Ness & Abbot, apndice C.1 y asigna el resultado a y
Devuelve y
END FUNCTION
FUNCTION cpH_Prausnitz_4ed(t, l1)
Extrae el primer elemento de l1 y lo asigna a A
Extrae el segundo elemento de l1 y lo asigna a B
Extrae el tercer elemento de l1 y lo asigna a C
Extrae el cuarto elemento de l1 y lo asigna a D
Calcula la capacidad calorfica de gas ideal, con los factores A, B, C y D y la temperatura t,
segn la ecucion dada por Reid, Prausnitz & Poling, pag. 657 y asigna el resultado a y
Devuelve y
END FUNCTION
FUNCTION cpH_Prausnitz_5ed(t, l1)
Extrae el primer elemento de l1 y lo asigna a ccp
Extrae el segundo elemento de l1 y lo asigna a Rcons
Extrae el primer elemento de ccp y lo asigna a a0
Extrae el segundo elemento de ccp y lo asigna a a1
Extrae el tercer elemento de ccp y lo asigna a a2
Extrae el cuarto elemento de ccp y lo asigna a a3
Extrae el quinto elemento de ccp y lo asigna a a4
Calcula la capacidad calorfica de gas ideal, con los factores a0, a1, a2, a3 y a4 y la
temperatura t, segn la ecucion dada por Poling, Prausnitz & OConnell y asigna el
resultado a y
Devuelve y
END FUNCTION
FUNCTION cpH_Perry7_1(t, l1)
Extrae el primer elemento de l1 y lo asigna a C1
Extrae el segundo elemento de l1 y lo asigna a C2
Extrae el tercer elemento de l1 y lo asigna a C3
Extrae el cuarto elemento de l1 y lo asigna a C4
Extrae el quinto elemento de l1 y lo asigna a C5
Calcula la capacidad calorfica de gas ideal, con los factores C1, C2, C3, C4 y C5 y la
temperatura t, segn la ecucion dada por Perry, 7ma ed., pag. 2 182 y asigna el resultado a
y
Devuelve y
END FUNCTION
FUNCTION cpH_Perry7_2(t, l1)
Extrae el primer elemento de l1 y lo asigna a C1
Extrae el segundo elemento de l1 y lo asigna a C2
Extrae el tercer elemento de l1 y lo asigna a C3
Extrae el cuarto elemento de l1 y lo asigna a C4
Extrae el quinto elemento de l1 y lo asigna a C5
Calcula la capacidad calorfica de gas ideal, con los factores C1, C2, C3, C4 y C5 y la
temperatura t, segn la ecucion dada por Perry, 7ma ed., pag. 2 182 y asigna el resultado a
y
Devuelve y
END FUNCTION
FUNCTION cpH_Perry7_3(t, l1)
Extrae el primer elemento de l1 y lo asigna a C1
Extrae el segundo elemento de l1 y lo asigna a C2
Extrae el tercer elemento de l1 y lo asigna a C3
Extrae el cuarto elemento de l1 y lo asigna a C4
Calcula la capacidad calorfica de gas ideal, con los factores C1, C2, C3 y C4 y la
temperatura t, segn la ecucion dada por Perry, 7ma ed., pag. 2 182 y asigna el resultado a
y
Devuelve y
END FUNCTION
FUNCTION cpH_Perry8_1(t, l1)
Extrae el primer elemento de l1 y lo asigna a C1
Extrae el segundo elemento de l1 y lo asigna a C2
Extrae el tercer elemento de l1 y lo asigna a C3
Extrae el cuarto elemento de l1 y lo asigna a C4
Extrae el quinto elemento de l1 y lo asigna a C5
Calcula la capacidad calorfica de gas ideal, con los factores C1, C2, C3, C4 y C5 y la
temperatura t, segn la ecucion dada por Perry, 8va ed., pag. 2 175 y asigna el resultado a
y
Devuelve y
END FUNCTION
FUNCTION cpH_Perry8_2(t, l1)
Extrae el primer elemento de l1 y lo asigna a C1
Extrae el segundo elemento de l1 y lo asigna a C2
Extrae el tercer elemento de l1 y lo asigna a C3
Extrae el cuarto elemento de l1 y lo asigna a C4
Extrae el quinto elemento de l1 y lo asigna a C5
Calcula la capacidad calorfica de gas ideal, con los factores C1, C2, C3, C4 y C5 y la
temperatura t, segn la ecucion dada por Perry, 8va ed., pag. 2 181 y asigna el resultado a
y
Devuelve y
END FUNCTION
FUNCTION Int_cpH_evalf(t, lf_cpH, numc, pathDir)
IF numc es igual a 1
Evalua el primer elemento de lf_cpH (una funcion), utilizando como parametros a t y
el segundo elemento lf_cpH
ELSEIF numc es mayor de 1
Utilizando pathDir, llama al espacio de trabajo a func_cad.py
Asigna func a car
Asigna el primer elemento de lf_cpH a lf; Asigna el segundo elemento de lf_cpH a lc
Asigna el tercer elemento de lf_cpH a lv
Evalua func_def, utilizando como parametros a car y numc y asigna el resultado a vf
Con la funcion de Scilab execstr, ejecuta vf
Evalua func_cad_impH, utilizando como parametros a car, lv y numc, y asigna el resultado
a sum_fun
Agrega y = a sum_fun y el resultado lo asigna a instr
Con la funcion de Scilab execstr, evalua la cadena de caracteres almacenada en instr, y
devuelve y
END IF
END FUNCTION
FUNCTION Int_cpS_evalf(t, lf_cpS, numc, pathDir)
IF numc es igual a 1
Evalua el primer elemento de lf_cpS (una funcion), utilizando como parametros a t y
el segundo elemento lf_cpS, dividido entre t
ELSEIF numc es mayor de 1
Utilizando pathDir, llama al espacio de trabajo a func_cad.py
Asigna func a car
Asigna el primer elemento de lf_cpS a lf; Asigna el segundo elemento de lf_cpS a lc
Asigna el tercer elemento de lf_cpS a lv
Evalua func_def, utilizando como parametros a car y numc y asigna el resultado a vf
Con la funcion de Scilab execstr, ejecuta vf
Evalua func_cad_impH, utilizando como parametros a car, lv y numc, y asigna el resultado
a sum_fun
Agrega y = a sum_fun y el resultado lo asigna a instr
Con la funcion de Scilab execstr, evalua la cadena de caracteres almacenada en instr, y
devuelve y
END IF
Devuelve y
END FUNCTION
Programa [Link]
FUNCTION consEq(numc, T, T0, lf_cpH, lf_cpS, pathDir, itemRom, delH0, delG0)
Utilizando pathDir, establece la ruta del directorio de [Link], y asigna el
resultado a dir2
Utilizando dir2, llama al espacio de trabajo a RomberT
Utilizando pathDir, establece la ruta del directorio de CalcDH_DS.sci, y asigna el
resultado a dir3
Utilizando dir3, llama al espacio de trabajo a CalcDH_DS
Asigna 8.314 a Rcons
Agrupa a Int_cpH_evalf, lf_cpH y pathDir en una lista y asigna el resultado a lf_cpH_evalf
Agrupa a Int_cpS_evalf, lf_cpS y pathDir en una lista y asigna el resultado a lf_cpS_evalf
Asigna 0.0001 a tol
Evalua Romberg, utilizando como parametros a numc, T0, T, lf_cpH_evalf, itemRom y tol, y
Asigna el resultado a IntH
Divide el primer elemento de IntH entre Rcons y asigna el resultado a delH
Evalua Romberg, utilizando como parametros a numc, T0, T, lf_cpS_evalf, itemRom y tol, y
asigna el resultado a IntS
Divide el primer elemento de IntH entre Rcons y asigna el resultado a delS
Calcula K0, utilizando a delG0, Rcons y T0
Calcula K1, utilizando a delH0, T0, T, Rcons y T0
Calcula K2, utilizando a delH, T y delS
Multiplica K0, K1 y K2 y asigna el resultado a K
Devuelve K
END FUNCTION
FUNCTION comEq(e, mol_ini, lv, K, P)
Calcula la longitude de lv y la asigna a n
Crea un vector vacio y la asigna a molv
FOR la variable i se encuentra entre 0 y n
Calcula los moles de la especie qumica i, utilizando al elemento i de mol_ini y de lv, y al
avance de reaccion e, y lo agrega como elemento a molv
END FOR
Suma los elementos de molv y el resultado lo asigna a molT
Crea una lista vacia y la asigna a compv; Asigna 1 a fc
FOR la variable i se encuentra entre 0 y n
Divide el elemento i de molv entre molT, y lo agrega como nuevo elemento de compv
IF el elemento i de lv es distinto de 0
Eleva el elemento i de compv al elemento i de lv, y el resultado lo multiplica por fc
ELSEIF el elemento i de lv es igual a 0
Multiplica fc por 1, y el resultado lo asigna a fc
END IF
END FOR
Suma los elementos de lv y lo asigna a v
Utilizando la ecuacin 13.28 dada por Smith, Van Ness y Abbott, y las variables K, P, v y fc,
construye una expresin a ser resuelta junto con un mtodo de resolucin de ecuaciones no
lineales, como el mtodo de la secante y la guarda en fun.
Devuelve fun
END FUNCTION
FUNCTION Rlimit( mol_ini, lv, K)
Calcula la longitud de mol_ini y la asigna a n
Asigna 0 a cont
Crea un vector vacio y la asigna a e_limit
Crea un vector vacio y la asigna a iv
FOR la variable i se encuentra entre 0 y n
IF el elemento i de lv es menor que 0
IF ABS(elemento i de lv) es mayor que 0
Suma 1 a cont y asigna el resultado a cont
Tomando como base a especie i, calcula el avance de reaccin, asumiendo una
reaccin completa, y agrega el resultado como nuevo elemento de e_limit
Agrega i como nuevo elemento de iv
END IF
END IF
END FOR
Asigna 0 a cont
Calcula la longitud de e_limit y lo asigna a lnr
Crea una matriz de ceros con lnr filas y n columnas y asigna el resultado a mol_rxn
Crea una lista vacia y la asigna a e_res
Crea una lista vacia y la asigna a iv2
FOR la variable i se encuentra entre 0 y n
IF alguno de los valores de i coincide con alguno de los valores de iv
FOR la variable j se encuentra entre 0 y n
Calcula los moles reaccionados utilizando al elemento cont de e_limit, y al elemento j
de lv y de mol_ini, y guarda el resultado en la fila cont, columna j de mol_rxn
(cont equivale al numero de reactivos y j al numero de especies)
END FOR
IF todos los elementos de la fila cont de mol_rxn son mayor que 0
Extrae el elemento cont de e_limit y lo agrega como nuevo elemento de e_res
Agrega cont como nuevo elemento de iv2
END IF
Suma 1 a cont y asigna el resultado a cont
END IF
END FOR
Extrae el elemento 0 de iv2, lo utiliza en e_limit, y asigna el resultado a e_max
Devuelve fun
END FUNCTION
FUNCTION defConsEq(datc, T, P, v, pathDir)
Calcula la longitud de v y asigna el resultado a n
IF hay disponibilidad de una constante de equilibrio
Imprime un mensaje pidiendo por la constante de equilibrio y asigna el resultado a K
IF K es de punto flotante y mayor de 0
Continua con las siguientes lneas de cdigo
ELSE
Vuelve a pedir a K
END IF
ELSEIF no hay disponibilidad de una constante de equilibrio
IF el cambio de entalpia es independiente de la temperatura
Imprime un mensaje pidiento la temperatura T0 de reaccin
IF T0 es de punto flotante y mayor de cero
Continua con las siguientes lneas de cdigo
ELSE
Vuelve a pedir a T0
END IF
Imprime un mensaje pidiento la temperatura K0 de reaccin
IF K0 es de punto flotante y mayor de cero
Continua con las siguientes lneas de cdigo
ELSE
Vuelve a pedir a K0
END IF
Imprime un mensaje pidiento el cambio de entalpia de reaccin y lo asigna a delHrxn
IF delHrxn es de punto flotante
Continua con las siguientes lneas de cdigo
ELSE
Vuelve a pedir a delHrxn
END IF
Calcula la constante de equilibrio, utilizando la ecuacin 13.15 de Smith, Van Ness &
Abbott y lo asigna a K
ELSEIF el cambio de entalpia no es independiente de la temperatura
Establece la ruta del directorio de ccp_ing.py y lo asigna a ring
Utilizando ring, llama al espacio de trabajo a ccp_ing
Establece la ruta del directorio de [Link] y lo asigna a ring
Utilizando rcK, llama al espacio de trabajo a cK
Imprime un mensaje pidiendo la temperatura inicial y asigna el resulato a T0
IF T0 es de punto flotante y mayor de 0
Continua con las siguientes lneas de codigo
ELSE
Vuelve a pedir T0
END IF
Imprime un mensaje pidiendo el cambio de entalpia de reaccin y lo asigna a delHrxn
IF delHrxn es de punto flotante y mayor de 0
Continua con las siguientes lneas de codigo
ELSE
Vuelve a pedir delHrxn
END IF
Imprime un mensaje pidiendo el cambio de entalpia de reaccin y lo asigna a delGrxn
IF delGrxn es de punto flotante y mayor de 0
Continua con las siguientes lneas de codigo
ELSE
Vuelve a pedir delGrxn
END IF
Asigna 8.314 a Rcons; Asigna el primer elemento de datc a numR;
Asigna el segundo elemento de datc a numP;
Asigna el tercer elemento de datc a numI;
Suma numR a numP y asigna el resultado a numP2
Crea una lista vacia y la asigna a catalog
FOR la variable i se encuentra entre i y n
IF i es menor que numR
Suma 1 a i, lo convierte a una cadena de caracteres, esto es agregado al carcter
R y asigna el resultado a st1
ELSEIF i es mayor o igual que numR y menor que numP2
Suma 1 a i, le resta numR, lo convierte a una cadena de caracteres, esto es
agregado al carcter P y asigna el resultado a st1
END IF
IF numI es distinto de 0
IF i es mayor que numP2
Suma 1 a i, le resta numP2, lo convierte a una cadena de caracteres, esto es
agregado al carcter I y asigna el resultado a st1
END IF
END IF
Evalua ccp_ing, utilizando como parametros a pathDir, st1 y Rcons y el resultado
lo asigna como nuevo elemento de catalog
END FOR
Crea una lista vacia y la asigna a lc
Crea una lista vacia y la asigna a lf
FOR i se encuentre entre 0 y n
Asigna el elemento de la fila i, columna 0 a valc
Asigna el elemento de la fila i, columna 1 a valf
IF la longitud del elemento i de catalog es igual a 3
Agrupa a valc y Rcons en una lista y la asigna a valc
END IF
Agrega valc como nuevo elemento de lc
Agrega valf como nuevo elemento de lf
END FOR
Agrupa a lf, lv y v en una lista y asigna el resultado a lf_cpH
Agrupa a lf, lv y v en una lista y asigna el resultado a lf_cpS
Asigna 10 a itemRom
Evalua consEq, utilizando como parametros n, T, T0, lf_cpH, lf_cpS, pathDir, itemRom,
delHrxn0 y delGrxn0, y asigna el resultado a K
END IF
END IF
Devuelve a K
END FUNCTION
Programa ccp_ing.py
FUNCTION ccp_ing(pathDir, st1, Rcons)
Establece la ruta del directorio de CalcDH_DS.py y lo guarda en dir1
Utilizando dir1 llama al espacio de trabajo a CalcDH_DS
Imprime un mensaje pidiendo el libro, del cual se obtendrn las constantes para las
capacidade calorficas en funcion de la temperatura y guarda el resultado en bk
IF bk es entero y es 1, 2, 3, 4 o 5
Continua con las siguientes lneas de cdigo
ELSE
Vuelve a pedir bk
END IF
IF bk es igual a 3
Pide el tipo de ecuacin de capacidad calorfica a utilizar y guarda el resultado en eco
IF eco es distinto a A, B, o C
Vuelve a pedir eco
ELSE
Continua con las siguientes lneas de cdigo
END IF
ELSEIF bk es igual a 4
Pide el tipo de ecuacin de capacidad calorfica a utilizar y guarda el resultado en eco
IF eco es distinto a A o B
Vuelve a pedir eco
ELSE
Continua con las siguientes lneas de cdigo
END IF
END IF
IF bk es igual a 1
Imprime un mensaje pidiendo 4 constantes y asigna el resultado en la lista ccp
IF los elementos de ccp no son de punto flotante o su numero es diferente de 4
Vuelve a pedir las constantes
ELSE
Continua con las siguientes lneas de codigo
END IF
Agrupa en una lista a ccp y cpH_Prausnitz_4ed y asigna el resultado a catg1
Devuelve a catg1
ELSEIF bk es igual a 2
Imprime un mensaje pidiendo 5 constantes y asigna el resultado en la lista ccp
IF los elementos de ccp no son de punto flotante o su numero es diferente de 5
Vuelve a pedir las constantes
ELSE
Continua con las siguientes lneas de codigo
END IF
Agrupa en una lista a ccp, cpH_Prausnitz_5ed y Rcons, y asigna el resultado a catg1
Devuelve a catg1
ELSEIF bk es igual a 3
IF eco es igual a A
Imprime un mensaje pidiendo 5 constantes y asigna el resultado en la lista ccp
IF los elementos de ccp no son de punto flotante o su numero es diferente de 5
Vuelve a pedir las constantes
ELSE
Continua con las siguientes lneas de codigo
END IF
Agrupa en una lista a ccp y cpH_Perry7_1, y asigna el resultado a catg1
Devuelve a catg1
ELSEIF eco es igual a B
Imprime un mensaje pidiendo 5 constantes y asigna el resultado en la lista ccp
IF los elementos de ccp no son de punto flotante o su numero es diferente de 5
Vuelve a pedir las constantes
ELSE
Continua con las siguientes lneas de codigo
END IF
Agrupa en una lista a ccp y cpH_Perry7_2, y asigna el resultado a catg1
Devuelve a catg1
ELSEIF eco es igual a C
Imprime un mensaje pidiendo 4 constantes y asigna el resultado en la lista ccp
IF los elementos de ccp no son de punto flotante o su numero es diferente de 4
Vuelve a pedir las constantes
ELSE
Continua con las siguientes lneas de codigo
END IF
Agrupa en una lista a ccp y cpH_Perry7_3, y asigna el resultado a catg1
Devuelve a catg1
ELSEIF bk es igual a 4
IF eco es igual a A
Imprime un mensaje pidiendo 5 constantes y asigna el resultado en la lista ccp
IF los elementos de ccp no son de punto flotante o su numero es diferente de 5
Vuelve a pedir las constantes
ELSE
Continua con las siguientes lneas de codigo
END IF
Agrupa en una lista a ccp y cpH_Perry8_1, y asigna el resultado a catg1
Devuelve a catg1
ELSEIF eco es igual a B
Imprime un mensaje pidiendo 5 constantes y asigna el resultado en la lista ccp
IF los elementos de ccp no son de punto flotante o su numero es diferente de 5
Vuelve a pedir las constantes
ELSE
Continua con las siguientes lneas de codigo
END IF
Agrupa en una lista a ccp y cpH_Perry8_2, y asigna el resultado a catg1
Devuelve a catg1
ELSEIF bk es igual a 5
Imprime un mensaje pidiendo 3 constantes y asigna el resultado en la lista ccp
IF los elementos de ccp no son de punto flotante o su numero es diferente de 3
Vuelve a pedir las constantes
ELSE
Continua con las siguientes lneas de codigo
END IF
Agrupa en una lista a ccp, cpH_SVN y Rcons, y asigna el resultado a catg1
Devuelve a catg1
END IF
END FUNCTION
Programa func_cad.py
FUNCTION cad_comp_imp(car, n)
Crea una lista vacia y la asigna a st1
Crea una lista vacia y la asigna a st2
Crea una cadena de caracteres vacia y la asigna a st3
Crea una cadena de caracteres vacia y la asigna a st4
FOR i se encuentre entre 0 y n
Utiliza i y car para construir parte de una cadena de caracteres a imprimir y la asigna a
st1t
Agrega st1t como nuevo elemento de la lista st1
Utiliza i y car para construir parte de una cadena de caracteres a evaluar y la asigna a
st2t
Agrega st2t como nuevo elemento de la lista st2
Une st3 y el elemento i de st1 en una cadena de caracteres a imprimir y asigna el resultado
a st3
Une st4 y el elemento i de st2 en una cadena de caracteres a evaluar y asigna el resultado a
st4
END FOR
Agrupa en una lista a st3 y st4 y lo devuelve
END FUNCTION
(En esta funcion se toman en cuenta la posibilidad de que n sea igual o mayor de 2 elementos, o
que i se encuentre al principio, medio o final de la cadena de caracteres final)
FUNCTION com_ing(n, car, sf_aux1, sf_aux2, sf_aux3)
Crea una cadena de caracteres vacia y la asigna a st2
Crea una lista vacia y la asigna a st
FOR i se encuentra entre 0 y n
Utiliza car e i para construir parte de una cadena de caracteres a imprimir y la asigna a st_t
Agrega st_t como nuevo elemento de st
Une el elemento i de st y st2 en una cadena de caracteres a imprimir y asigna el resultado a
st2
END FOR
Imprime sf_aux1
IF no es posible evaluar st2 dentro de la funcion input (resultado asignado a c_st), o si los
elementos de c_st, separados como sub-cadenas de caracteres y agrupados dentro de la lista
ctem no son de punto flotante, o si el numero de elementos ingresados es menor que n, o si
cualquiera de los elementos ingresados es menor que 0
Imprime mensajes de error con sf_aux2, sf_aux3 y sf_aux1
Vuelve a pedir c_st, y a hacer las operaciones necesarias para obtener ctem
ELSE
Continua con las siguientes lneas de cdigo
END IF
Asigna ctem a c
Devuelve c
END FUNCTION
FUNCTION com_ingR(n, car, sf_aux1, sf_aux2, sf_aux3)
Crea una cadena de caracteres vacia y la asigna a st2
Crea una lista vacia y la asigna a st
FOR i se encuentra entre 0 y n
Utiliza car e i para construir parte de una cadena de caracteres a imprimir y la asigna a st_t
Agrega st_t como nuevo elemento de st
Une el elemento i de st y st2 en una cadena de caracteres a imprimir y asigna el resultado a
st2
END FOR
Imprime sf_aux1
IF no es posible evaluar st2 dentro de la funcion input (resultado asignado a c_st), o si los
elementos de c_st, separados como sub-cadenas de caracteres y agrupados dentro de la lista
ctem no son de punto flotante, o si el numero de elementos ingresados es menor que n, o si
cualquiera de los elementos ingresados es mayor que 0
Imprime mensajes de error con sf_aux2, sf_aux3 y sf_aux1
Vuelve a pedir c_st, y a hacer las operaciones necesarias para obtener ctem
ELSE
Continua con las siguientes lneas de cdigo
END IF
Asigna ctem a c
Devuelve c
END FUNCTION
FUNCTION func_def(car, n)
Crea una cadena de caracteres vacia y la asigna a st4
Crea una lista vacia y la asigna a st2
FOR i se encuentra entre 0 y n
Utiliza car e i para construir parte de una cadena de caracteres a imprimir y la asigna a st2_t
Agrega st2_t como nuevo elemento de st2
Une el elemento i de st2 y st4 en una cadena de caracteres a evaluar y asigna el resultado
a st4
END FOR
Devuelve st4
END FUNCTION
FUNCTION func_cad_impH(car, lv, n)
Crea una cadena de caracteres vacia y la asigna a st4
Crea una lista vacia y la asigna a st2
FOR i se encuentra entre 0 y n
Utiliza car e i para construir parte de una cadena de caracteres a evaluar y la asigna a st2_t
Agrega st2_t como nuevo elemento de st2
Une el elemento i de st2 y st4 en una cadena de caracteres a evaluar y asigna el resultado
a st4
END FOR
Devuelve st4
END FUNCTION
FUNCTION func_cad_impS(car, lv, n)
Crea una cadena de caracteres vacia y la asigna a st4
Crea una lista vacia y la asigna a st2
FOR i se encuentra entre 0 y n
Utiliza car e i para construir parte de una cadena de caracteres a evaluar y la asigna a st2_t
Agrega st2_t como nuevo elemento de st2
Une el elemento i de st2 y st4 en una cadena de caracteres a evaluar y asigna el resultado
a st4
END FOR
Devuelve st4
END FUNCTION
Calc_EqC.py
Establece la ruta del directorio de [Link] y guarda el resultado en dir1
Utilizando a dir1, llama al espacio de trabajo a cK
Establece la ruta del directorio de func_cad.py y guarda el resultado en dir3
Utilizando a dir3, llama al espacio de trabajo a func_cad
Establece la ruta del directorio de [Link] y guarda el resultado en dir4
Utilizando a dir4, llama al espacio de trabajo a defK
Establece la ruta del directorio de rootRegulaFa_mod.py y guarda el resultado en dir5
Utilizando a dir5, llama al espacio de trabajo a rootRegula_mod
Imprime un mensaje pidiendo por el numero de reactivos y asigna el resultado a numR
IF numR no es entero o es menor de 0
Vuelve a pedir a numR
ELSE
Continua con las siguientes lneas de cdigo
END IF
Asigna R a car
Crea una cadena de caracteres y la asigna a sf_aux1
Crea una cadena de caracteres y la asigna a sf_aux2
Crea una cadena de caracteres y la asigna a sf_aux3
Evalua com_ing, utilizando como parametros a numR, car, sf_aux1, sf_aux2 y sf_aux3 y asigna
el resultado a CantR
Asigna vR a car
Crea una cadena de caracteres y la asigna a sf_aux1
Crea una cadena de caracteres y la asigna a sf_aux2
Crea una cadena de caracteres y la asigna a sf_aux3
Evalua com_ingR, utilizando como parametros a numR, car, sf_aux1, sf_aux2 y sf_aux3 y asigna
el resultado a vR
Imprime un mensaje pidiendo por el numero de productos y asigna el resultado a numP
IF numP no es entero o es menor de 0
Vuelve a pedir a numP
ELSE
Continua con las siguientes lneas de cdigo
END IF
Asigna P a car
Crea una cadena de caracteres y la asigna a sf_aux1
Crea una cadena de caracteres y la asigna a sf_aux2
Crea una cadena de caracteres y la asigna a sf_aux3
Evalua com_ing, utilizando como parametros a numP, car, sf_aux1, sf_aux2 y sf_aux3 y asigna
el resultado a CantP
Asigna vP a car
Crea una cadena de caracteres y la asigna a sf_aux1
Crea una cadena de caracteres y la asigna a sf_aux2
Crea una cadena de caracteres y la asigna a sf_aux3
Evalua com_ing, utilizando como parametros a numR, car, sf_aux1, sf_aux2 y sf_aux3 y asigna
el resultado a vP
Forma un arreglo con los elementos de CantR y de CantP y lo asigna a Cant
Forma un arreglo con los elementos de vR y de vtP y lo asigna a v
Imprime un mensaje, pidiendo especificar si hay compuestos inertes y el resultado lo asigna a
CmI
IF CmI es menor de 0 o no es de tipo entero
Vuelve a pedir a CmI
ELSE
Continua con las siguientes lneas de cdigo
END IF
Asigna 0 a numI
IF CmI es igual a 1
Imprime un mensaje, requiriendo ingresar el numero de compuestos inertes presentes
IF numI es menor que 0 o no es de tipo entero
Vuelve a pedir a numI
ELSE
Continua con las siguientes lneas de cdigo
END IF
Asigna I a car
Crea una cadena de caracteres y la asigna a sf_aux1
Crea una cadena de caracteres y la asigna a sf_aux2
Crea una cadena de caracteres y la asigna a sf_aux3
Evalua com_ing, utilizando como parametros a numP, car, sf_aux1, sf_aux2 y sf_aux3 y
asigna el resultado a CantIn
Crea un vector de ceros y asigna el resultado a vI
Agrupa en un arreglo a Cant y CantIn y lo asigna a Cant
Agurpa en un arreglo a v y vI y asigna el resultado a v
Calcula la longitud de Cant y lo asigna a n
Imprime un mensaje, pidiendo el ingreso de la temperatura y asignando el resultado a T
IF T es menor que 0 o no es de tipo entero
Vuelve a pedir T
ELSE
Continua con las siguientes lneas de cdigo
END IF
Imprime un mensaje, pidiendo el ingreso de la temperatura y asignando el resultado a P
IF T es menor que 0 o no es de tipo entero
Vuelve a pedir P
ELSE
Continua con las siguientes lneas de cdigo
END IF
Agrupa en una lsta a numR, numP y numI y la asigna a datc
Evalua defConsEq, utilizando como parametros a datc, T, P, v y r_prin, y asigna el resultado a K
Evalua Rlimit, utilizando como parametros a Cant, v y K, y asigna el resultado a e0
Asigna 0.00001 a tol
Asigna 100 a imax
Agrupa en una tupla a Cant, v, K y P y asigna el resultado a param
Asigna 0.0000005 a h; Resta h a e0 y asigna el resultado a e0
Agrupa h y e0 en una lista y asigna el resultado a bracket
Evalua rootRegula_FA_mod, utilizando como parametros a e0, comEq, param, bracket, tol,
imax, store = True y asigna el resultado a vm1
Calcula las dimensiones de vm1 y las guarda en s1
IF la longitud de s1 es igual a 1
Asigna el segundo elemento de vm1 a e_eq
ELSEIF la longitud de s1 es igual a 2
Resta 1 al primer elemento de de s1 y lo asigna a f1
Extrae el elemento de la fila f1, columna 1 de vm1 y lo asigna a e_eq
END IF
Crea una lista vacia y la asigna a molv; Crea una lista vacia y la asigna a compv
FOR i se encuentra entre 0 y n
Calcula la cantidad de moles de la especie i, utilizando el elemento i de Cant, de v y a e_eq
y asigna el resultado a compv
END FOR
Calcula la suma de los elementos de molv y asigna el resultado a molT
FOR i se encuentra entre 0 y n
Calcula la concentracin molar de la especie i, utilizando el elemento i de molv y a molT
y asigna el resultado a compv
END FOR
Suma numR a numP y asigna el resultado a numP2
Asigna desde el primer hasta el numR elemento de molv a R
Asigna desde el elemento numR hasta el numP2 elemento de molv a P
Asigna desde el primer hasta el numR elemento de compv a cR
Asigna desde el elemento numR hasta el numP2 elemento de compv a cP
Imprime e_eq
Asigna R a car
Evalua cad_comp_imp, utilizando a car y numR, y asigna el resultado a catR_car
Asigna el primer elemento de catR_car a stRcar;
Crea una cadena de caracteres con el segundo elemento de catRcar, y asigna el resultado a
stReval
Imprime un mensaje, donde se utiliza a stRc como cadena de caracteres a imprimir y a stReval
como cadena de caracteres a evaluar como codigo
Asigna P a car
Evalua cad_comp_imp, utilizando a car y numP, y asigna el resultado a catP_car
Asigna el primer elemento de catP_car a stPcar;
Crea una cadena de caracteres con el segundo elemento de catPcar, y asigna el resultado a
stPeval
Imprime un mensaje, donde se utiliza a stPc como cadena de caracteres a imprimir y a stPeval
como cadena de caracteres a evaluar como codigo
Asigna cR a car
Evalua cad_comp_imp, utilizando a car y numR, y asigna el resultado a catR_car
Asigna el primer elemento de catR_car a stRcar;
Crea una cadena de caracteres con el segundo elemento de catRcar, y asigna el resultado a
stReval
Crea una cadena de caracteres, utilizando a stPcar y la asigna a stPc
Imprime un mensaje, donde se utiliza a stRc como cadena de caracteres a imprimir y a stReval
como cadena de caracteres a evaluar como codigo
Asigna cP a car
Evalua cad_comp_imp, utilizando a car y numP, y asigna el resultado a catP_car
Asigna el primer elemento de catP_car a stPcar;
Crea una cadena de caracteres con el segundo elemento de catPcar, y asigna el resultado a
stPeval
Crea una cadena de caracteres, utilizando a stPcar y la asigna a stPc
Imprime un mensaje, donde se utiliza a stPc como cadena de caracteres a imprimir y a stPeval
como cadena de caracteres a evaluar como codigo
IF CmI es igual a 1
Suma numP2 a numI y asigna el resultado a numI2
Asigna desde el elemento numP2 hasta numI2 de molv
Asigna desde el elemento numP2 hasta numI2 de compv
Asigna I a car
Evalua cad_comp_imp, utilizando como parametros a car y numI, y asigna el resultado
catI_car
Asigna el primer elemento de catI_car a stIcar;
Crea una cadena de caracteres con el segundo elemento de catIcar, y asigna el resultado a
stIc
Crea una cadena de caracteres, utilizando a stIcar y la asigna a stIc
Imprime un mensaje, donde se utiliza a stIc como cadena de caracteres a imprimir y a
stIeval como cadena de caracteres a evaluar como codigo
Python
Metodos Numericos
Programa [Link]
FUNCTION TrapEq(nit, numc, a, b, lfun_pri)
Extrae el primer valor de la lfun_pri y asigna el resultado a fun (de izquierda a derecha)
Extrae el segundo valor de la lista y asigna el resultado a lfun_sec
Extrae el tercer valor de la lista y asigna el resultado a pathDir
Calcula el espaciamiento entre cada subintervalo (trapecio) y asigna el resultado a h
Asigna a x el valor de a
Evala fun, utilizando como parmetros x, lfun_sec, numc y pathDir y asigna el resultado a
suma
FOR la variable i se encuentre entre 0 y nit - 1
Suma x a h y asigna el resultado a x
Evala fun, utilizando como parmetros x, lfun_sec, numc y pathDir, multiplica el resultado
por 2, suma el resultado a suma y asigna el resultado a suma.
END FOR
Evala fun, utilizando como parmetros x, lfun_sec, numc y pathDir, suma el resultado a
suma y asigna el resultado a suma.
Multiplica suma por h, divdelo por 2, y asigna el resultado a res
Devuelve res
END FUNCTION
FUNCTION Romberg(numc, a, b, lfun, itermax, tol)
Crea una matriz de 10 columnas y 10 filas compuesta de zeros y asigna el resultado a I
Asigna a nit el valor de 1
Evala la funcin TrapEq, utilizando como parmetros nit, numc, a, b y lfun, y asigna el
resultado a la celda de I en la columna 0, fila 0.
Asigna a iter el valor de 0
Asigna a ea el valor de 10; Multiplica tol por 100 y asigna el resultado a es
WHILE ea sea mayor o igual a es
Suma it y 1, y asigna el resultado it
Eleva 2 al valor dado por it y asigna el resultado a nit
Resta 1 a it y asigna el resultado a iterI
Calcula el nmero de filas y columnas de I, asigna el resultado a fil y col, respectivamente.
IF la suma de iterI + 1 es mayor que fil
Agrega una fila de zeros a I, despus de la ltima fila (de arriba a abajo)
END IF
Evala la funcin TrapEq, utilizando como parmetros nit, numc, a, b y lfun, y asigna el
resultado a la celda de I en la fila iterI + 1, columna 0.
FOR la variable k se encuentre entre entre 1 y it + 1
Suma 1 k a iterI, y asigna el resultado a j
IF j es mayor que col
Agrega una columna de ceros a I, despus de la ltima columna
END IF
Utiliza la frmula de integracin de Romberg para calcular el nuevo valor de la integral
evaluada y asigna el resultado a la celda de I en la fila j, columna k.
END FOR
Calcula el error porcentual entre los valores de las celdas de I en la fila 0, columna iterI +
1 y en la fila 0, columna iterI, y asigna el resultado a ea.
IF it es mayor o igual que itermax
Salir del ciclo
END IF
END WHILE
Asigna el valor de la celda de I en la fila 0, columna iterI + 1 a ultI
Forma una lista con los valores de ultI e I y asigna el resultado a res
Devuelve res
END FUNCTION
Programa rootBracket_3p3.py
Function rootBracket_3(func, x0, param, h)
IF func no corresponde a una funcin o una lista
Lanza un mensaje de error
END
Asigna el valor de x0 a xl
Evala rootBracket_evalf, utilizando como parmetros a func, param y xl, y asigna el
resultado a fxl
Suma h a xl y asigna el resultado a xu
Evala rootBracket_evalf, utilizando como parmetros a func, param y xu y asigna el
resultado a fxu
Establece que el signo de fxl y el signo de fxu, son distintos y almacena el resultado en done
IF done no es cierto
IF el ABS(fxu) es mayor que ABS(fxl)
Asigna h a h
Asigna xl a xu
Guarda fxl en fxu
END
END
WHILE done no es cierto
Guarda el valor de xu en xl
Asigna a fxl, el valor de fxu
Almacena 2*h en h
Suma h a xl y guarda el resultado en xu
Evala rootBracket_evalf, utilizando como parmetros func, xu y param
Establece que el signo de fxl y el signo de fxu, son distintos y almacena el resultado en done
IF ABS(fxu) es mayor que ABS(fxl) AND done no es cierto
Lanza un mensaje de error
END IF
END WHILE
IF xu es menor que 0
Asigna el valor de 0 a xu
ELSEIF xl es menor que 0
Asigna el valor de 0 a xl
END IF
Devuelve xl y xu
END FUNCTION
FUNCTION rootBracket_evalf(func, x, param)
IF param es diferente de None
Agrupa los parmetros x y param es una tupla y almacena el resultado en argsf
Evala func, utilizando como parmetros a argsf, y guarda el resultado en y
ELSE
Evala func, utilizando como parmetro a x, y guarda el resultado en y
END
Devuelve y
END FUNCTION
Programa rootNewton_cubic2.py
FUNCTION rootNewton_cubic2(x0, f, fp, arg, tol, imax, store)
Crea cuatro listas vacas, con nombres de vi, vx, f_x y ve
Agrega el valor de 0 como primer elemento de ve
Asigna 0 a iterv
Agrega x0 como primer elemento de vx
Extrae el elemento nmero iterv de vx y lo almacena en rv
Suma 1 a iterv y agrega el resultado a vi
Evala rootNewton_cubic2_evalf, utilizando como parmetros a f, x0, arg y asigna el
resultado a fx
Agrega fx a f_x
Asigna x0 a x
Evala rootNewton_cubic2_evalf, utilizando como parmetros a fp, x0, arg y asigna el
resultado a fpv
Divide fx entre fpv, resta el resultado a x0, luego guarda este valor en r
Suma 1 a iterv y guarda el resultado a iterv
Agrega r a vx
Extrae el elemento nmero iterv de vx y lo almacena en rn
Suma 1 a iterv y agrega el resultado a vi
Evala rootNewton_cubic2_evalf, utilizando como parmetros a f, x0, arg y asigna el
resultado a fr; Agrega fr como elemento de f_x
IF rn es distinto de 0
Calcula el error porcentual entre rv y rn, y lo agrega a ve
ELSE
Agrega 0 como elemento de ve
END IF
WHILE la ABS(diferencia entre r y x) sea mayor que tol AND iterv sea menor o igual que imax
Asigna el valor de r a x
Evala rootNewton_cubic2_evalf, utilizando como parmetros a f, x, arg y asigna el
resultado a fr
Evala rootNewton_cubic2_evalf, utilizando como parmetros a fp, x, arg y asigna el
resultado a fpv
Divide fx entre fpv, resta el resultado a x0, luego guarda este valor en r
Suma 1 a iterv y guarda el resultado a iterv
Agrega r a vx
Extrae el elemento nmero iterv de vx y lo almacena en rn
Extrae el elemento nmero iterv 1 de vx y lo almacena en rv
Suma 1 a iterv y agrega el resultado a vi
Agrega fr como elemento de f_x
IF rv es distinto de 0
Agrega
IF rn es distinto de 0
Calcula el error porcentual entre rv y rn, y lo agrega a ve
ELSE
Extrae el elemento nmero iterv 1 de ve y lo almacena como el siguiente elemento de
ve
END IF
IF store es igual a True
Crea una matriz con un nmero de filas igual a iterv y 4 columnas, y asigna el resultado a
vm
Asigna a la primera columna de vm, los elementos de vi
Asigna a la segunda columna de vm, los elementos de vx
Asigna a la tercera columna de vm, los elementos de f_x
Asigna a la cuarta columna de vm, los elementos de v_e
ELSE
Agrupa en un vector el ltimo valor de iterv (de izquierda a derecha), el ltimo valor de vx,
el ltimo valor de f_x, y el ltimo valor de ve, y asigna el resultado a vm (vector no matriz)
END IF
Devuelve vm
END FUNCTION
FUNCTION rootNewton_cubic2_evalf(func, x, param)
IF param es diferente de None
Agrupa los parmetros x y param en una tupla y almacena el resultado en argsf
Evala func, utilizando como parmetros a argsf, y guarda el resultado en y
ELSE
Evala func, utilizando como parmetro a x, y guarda el resultado en y
END
Devuelve y
END FUNCTION
Programa [Link]
FUNCTION rootRegulaFA2(x0, func, param, h, tol, imax, r_prin, store)
Establece la ruta del directorio de rootBracket_3p3.py (r_prin), y asigna el resultado a
pathBracket
Utilizando a pathBracket, llama al espacio de trabajo a rootBracket_3
Evala rootBracket_3, utilizando como parmetros func, x0, param y h, esto genera dos
valores que son asignados a xl y xu
Agrega el valor de 0 como primer elemento de ve
Asigna 0 a iterv
Evala rootRegulaFA2_evalf, utilizando como parmetros a func, xl y param, y asigna el
resultado a fxl
Evala rootRegulaFA2_evalf, utilizando como parmetros a func, xu y param, y asigna el
resultado a fxu
Calcula x, utilizando a xl, xu, fxl y fxu
Evala rootRegulaFA2_evalf, utilizando como parmetros a func, x y param, y asigna el
resultado a fx
IF el signo de fxl y el signo de fxu son iguales
Asigna x a xl
Asigna fx a fxl
ELSEIF el signo de fx y el signo de fxu son iguales
Asigna x a xu; Asigna fx a fxu
ELSE
Asigna x a xl
Asigna x a xu
END IF
Crea cuatro listas vacas, con nombres de vi, vx, f_x y ve
Suma 1 a iterv y agrega el resultado como primer elemento de vi
Agrega x como primer elemento de vx
Agrega fx como primer elemento de f_x
Suma 1 a iterv y asigna el resultado a iterv
IF el producto de fxl y fxu es mayor o igual a 0
Lanza un error
END IF
WHILE ABS(la diferencia de xu xl dividida por 2) es mayor que tol AND iterv es menor que
imax
Calcula x, utilizando a xl, xu, fxl y fxu
Evala rootRegulaFA2_evalf, utilizando como parmetros a func, x y param, y asigna
el resultado a fx
IF el signo de fxl y el signo de fxu son iguales
Asigna x a xl
Asigna fx a fxl
ELSEIF el signo de fx y el signo de fxu son iguales
Asigna x a xu; Asigna fx a fxu
ELSE
Asigna x a xl
Asigna x a xu
END IF
Agrega el actual valor de iterv como nuevo elemento de vi
Agrega el actual valor de x como nuevo elemento de vx
Agrega el actual valor de fx como nuevo elemento de f_x
Extrae el elemento nmero iterv de vx y lo almacena en rn
Extrae el elemento nmero iterv 1 de vx y lo almacena en rv
IF iterv es mayor o igual a 1
IF rv es distinto de 0
Calcula el error porcentual entre rv y rn, y agrega el resultado como elemento de ve
ELSE
Extrae el elemento nmero iterv 1 de ve y lo almacena como el siguiente elemento
de ve
END IF
END IF
Suma 1 a iterv y asigna el resultado a iterv
END WHILE
IF store es igual a True
Crea una matriz con un nmero de filas igual a iterv y 4 columnas, y asigna el resultado
a vm
Asigna a la primera columna de vm, los elementos de vi
Asigna a la segunda columna de vm, los elementos de vx
Asigna a la tercera columna de vm, los elementos de f_x
Asigna a la cuarta columna de vm, los elementos de v_e
ELSE
Agrupa en un vector el valor de iterv (de izquierda a derecha) correspondiente al ltimo
valor de vx, el ltimo valor de f_x, y el ltimo valor de ve, y asigna el resultado a vm (vector
no matriz)
END IF
Devuelve vm
END FUNCTION
FUNCTION rootRegulaFA2_evalf(func, x, param)
IF param es diferente de None
Agrupa los parmetros x y param en una tupla y almacena el resultado en argsf
Evala func, utilizando como parmetros a argsf, y guarda el resultado en y
ELSE
Evala func, utilizando como parmetro a x, y guarda el resultado en y
END
Devuelve y
END FUNCTION
Programa rootRegulaFA_mod.py
FUNCTION rootRegulaFA_mod(x0, func, param, bracket, tol, imax, store)
Agrega el valor de 0 como primer elemento de ve
Asigna 0 a iterv
Asigna el primer elemento de bracket a xl; Asigna el segundo elemento de bracket a xu
Evala rootRegulaFA2_evalf, utilizando como parmetros a func, xl y param, y asigna el
resultado a fxl
Evala rootRegulaFA2_evalf, utilizando como parmetros a func, xu y param, y asigna el
resultado a fxu
Calcula x, utilizando a xl, xu, fxl y fxu
Evala rootRegulaFA2_evalf, utilizando como parmetros a func, x y param, y asigna el
resultado a fx
IF el signo de fxl y el signo de fxu son iguales
Asigna x a xl
Asigna fx a fxl
ELSEIF el signo de fx y el signo de fxu son iguales
Asigna x a xu; Asigna fx a fxu
ELSE
Asigna x a xl
Asigna x a xu
END IF
Crea cuatro listas vacas, con nombres de vi, vx, f_x y ve
Suma 1 a iterv y agrega el resultado como primer elemento de vi
Agrega x como primer elemento de vx
Agrega fx como primer elemento de f_x
Suma 1 a iterv y asigna el resultado a iterv
IF el producto de fxl y fxu es mayor o igual a 0
Lanza un error
END IF
Asigna 0 a iu; Asigna 0 a il
Asigna 1 a op
WHILE op es igual a 1
Calcula x, utilizando a xl, xu, fxl y fxu
Asigna fx a fxw
Evala rootRegulaFA_mod_evalf, utilizando como parmetros a __comprob_f__ y x, y
asigna el resultado a fx
IF el signo de fxl y el signo de fxu son iguales
Asigna x a xl
Asigna fx a fxl
Suma 1 a iu y asigna el resultado a iu
IF iu es mayor o igual a 2
Divide fxu entre 2 y asigna el resultado a fxu
END
ELSEIF el signo de fx y el signo de fxu son iguales
Asigna x a xu; Asigna fx a fxu
Suma 1 a il y asigna el resultado a il
IF il es mayor o igual a 2
Divide fxl entre 2 y asigna el resultado a fxl
END
ELSE
Asigna x a xl
Asigna x a xu
END IF
Suma 1 a iterv y agrega el resultado como nuevo elemento de vi
Agrega el actual valor de x como nuevo elemento de vx
Agrega el actual valor de fx como nuevo elemento de f_x
Extrae el elemento nmero iterv de vx y lo almacena en rn
Extrae el elemento nmero iterv 1 de vx y lo almacena en rv
IF iterv es mayor o igual a 1
IF rv es distinto de 0
Calcula el error porcentual entre rv y rn, y agrega el resultado como elemento de ve
ELSE
Extrae el elemento nmero iterv 1 de ve y lo almacena como el siguiente elemento
de ve
END IF
END IF
Suma 1 a iterv, y asigna el resultado a iterv
IF ABS(la diferencia xu xl, dividida por 2) es real
IF ABS(la diferencia xu xl, dividida por 2) es menor que tol
Calcula ABS(la diferencia de fxw fx) y asigna el resultado a dif_fx
IF dif_x es mayor que tol
Asigna 1 a op
ELSE
Asigna 2 a op
END IF
END IF
ELSE
Imprime un mensaje
Sale del ciclo
END IF
IF iterv es mayor o igual que imax
Sale del ciclo WHILE
END
END WHILE
IF store es igual a True
Crea una matriz con un nmero de filas igual a iterv y 4 columnas, y asigna el resultado
a vm
Asigna a la primera columna de vm, los elementos de vi
Asigna a la segunda columna de vm, los elementos de vx
Asigna a la tercera columna de vm, los elementos de f_x
Asigna a la cuarta columna de vm, los elementos de v_e
ELSE
Agrupa en un vector el valor de iterv (de izquierda a derecha) correspondiente al ltimo
valor de vx, el ltimo valor de f_x, y el ltimo valor de ve, y asigna el resultado a vm (vector
no matriz)
END IF
Devuelve vm
END FUNCTION
FUNCTION rootRegulaFA_mod_evalf(__comprob_f__, x)
IF param es diferente de None
Agrupa los parmetros x y param en una tupla y almacena el resultado en argsf
Evala func, utilizando como parmetros a argsf, y guarda el resultado en y
ELSE
Evala func, utilizando como parmetro a x, y guarda el resultado en y
END
Devuelve y
END FUNCTION
Programa [Link]
FUNCTION fp(x, f, param)
Asigna 0.001 a h
Utilizando x como valor central y h como paso o espaciamiento entre cada elemento, crea un
vector con cinco elementos, y asigna el resultado xv.
Crea una lista vaca y asigna el resultado a fxv
Asigna 0 a i
WHILE i sea menor o igual que 3
Evala rootSecantePlus2A_evalf, utilizando f, el elemento nmero i de xv y param como
Parmetros; Agrega el resultado a f_xv
Suma 1 a i y asigna el resultado a i
END WHILE
Utilizando la frmula de diferencias finitas centradas de cinco puntos y xv, calcula la derivada
de f en x, y asigna el resultado a fun
Devuelve fun
END FUNCTION
FUNCTION rootSecantePlus2A(x0, func, param, tol, imax, store)
Crea cuatro listas vacas, con nombres de vi, vx, f_x y ve
Agrega el valor de 0 como primer elemento de ve
Asigna 0 a iterv
Agrega x0 como primer elemento de vx
Extrae el elemento nmero iterv de vx y lo almacena en rv
Suma 1 a iterv y agrega el resultado a vi
Evala rootSecantePlus2A_evalf, utilizando como parmetros a func, x0, param y asigna el
resultado a fx
Evala fp, utilizando como parmetros a x0, func y param, y asigna el resultado a fx_p
Agrega fx a f_x
Asigna x0 a x
Divide fx entre fx_p, resta el resultado a x0, luego guarda este valor en r
Suma 1 a iterv y guarda el resultado a iterv
Agrega r a vx
Extrae el elemento nmero iterv de vx y lo almacena en rn
Suma 1 a iterv y agrega el resultado a vi
Evala rootSecantePlus2A_evalf, utilizando como parmetros a func, r, param y asigna el
resultado a fx;
Evala fx_p, utilizando como parmetros a r, func y param, y asigna el resultado a fx_p
Agrega fx como elemento de f_x
IF r es menor que 0
Asigna 0 a r
END IF
IF rn es distinto de 0
Calcula el error porcentual entre rv y rn, y lo agrega a ve
ELSE
Agrega 0 como elemento de ve
END IF
Asigna 1 a op
WHILE op es igual a 1
Asigna r a x
Divide fx entre fx_p, resta el resultado a x0, luego guarda este valor en r
Suma 1 a iterv, y asigna el resultado a iterv
Agrega r a vx
Extrae el elemento nmero iterv de vx y lo almacena en rn
Extrae el elemento nmero iterv 1 de vx y lo almacena en rv
Suma 1 a iterv y agrega el resultado a vi
Asigna fx a fxw
Evala rootSecantePlus2A_evalf, utilizando como parmetros a func, r, param y asigna el
resultado a fx
Evala fp, utilizando como parmetros a r, func y param, y asigna el resultado a fx_p
Agrega fx como elemento de f_x
Calcula ABS(la diferencia de fxw fx), y asigna el resultado a dif_fx
IF rn es distinto de 0
Calcula el error porcentual entre rv y rn, y lo agrega a ve
ELSE
Agrega el elemento nmero iterv 1 de ve como nuevo elemento de ve
END IF
IF ABS(r x) es menor que tol
IF dif_fx es mayor que tol
Asigna 1 a op
ELSE
Asigna 2 a op
END IF
END IF
IF iterv es mayor o igual que imax
Sale del ciclo WHILE
END IF
END WHILE
IF store es igual a True
Crea una matriz con un nmero de filas igual a iterv y 4 columnas, y asigna el resultado a
vm
Asigna a la primera columna de vm, los elementos de vi
Asigna a la segunda columna de vm, los elementos de vx
Asigna a la tercera columna de vm, los elementos de f_x
Asigna a la cuarta columna de vm, los elementos de v_e
ELSE
Agrupa en un vector el ltimo valor de iterv (de izquierda a derecha), el ltimo valor de vx,
el ltimo valor de f_x, y el ltimo valor de ve, y asigna el resultado a vm (vector no matriz)
END IF
Devuelve vm
END FUNCTION
FUNCTION rootSecantePlus2A_evalf(func, x, param)
IF param es diferente de None
Agrupa los parmetros x y param en una tupla y almacena el resultado en argsf
Evala func, utilizando como parmetros a argsf, y guarda el resultado en y
ELSE
Evala func, utilizando como parmetro a x, y guarda el resultado en y
END
Devuelve y
END FUNCTION
Asignatura: Operaciones Unitarias I
Programa f_fric.py
CLASS FDarcy()
FUNCTION __init__(self, Q, D, rug)
Inicializa el atributo self.Q de la clase FDarcy con el valor del argumento de Q
Inicializa el atributo self.D de la clase FDarcy con el valor del argumento de D
Inicializa el atributo [Link] de la clase FDarcy con el valor del argumento de rug
(Si bien estos son los valores iniciales de los atributos de la clase, dichos valores cambian al
al llamar a la clase)
END FUNCTION
FUNCTION FD_flujo_laminar(self, Re)
Divide 64 entre Re, y asigna el resultado a fd
Devuelve fd
END FUNCTION
FUNCTION FD_flujoturc_tub_rug_VK(self)
Llama al atributo self.D y asigna dicho valor a D;
Llama al atributo [Link] y asigna dicho valor a rug;
Utilizando la ecuacin de Von Karmn, D y rug, calcula el factor de friccin para fluidos en
rgimen turbulento a travs de tuberas rugosas, y asigna el resultado a fd
Devuelve fd
END FUNCTION
FUNCTION FD_flujotr_Col(self, fd, Re)
Llama al atributo [Link] y asigna el resultado a rug
Llama al atributo self.D y asigna el resultado a D
Devuelve una expresin basada en la ecuacin de Colebrook, que utiliza a rug, Re, D y un
valor inicial de f,. Para obtener f, esta expresin debe ser utilizada en conjunto con un
mtodo de resolucin de ecuaciones no lineales, como el mtodo de la secante
END FUNCTION
FUNCTION Reynolds(self, v, vis_c)
Llama al atributo self.D y asigna el resultado a D
Multiplica v y D, el resultado lo divide por vis_c, y el resultado final lo devuelve
END FUNCTION
FUNCTION vel(self)
Llama al atributo Q y asigna el resultado a Q; Llama al atributo D y asigna el resultado a D;
Eleva D al cuadrado, esto lo multiplica por PI, luego divide 4 * Q por el resultado
anterior, y lo asigna a v.
Devuelve v
END FUNCTION
FUNCTION Q_calc(self, veloc)
Llama al atributo self.D y asigna el resultado a D
Eleva D al cuadrado, esto lo multiplica por 0.25 * PI * veloc, y el resultado lo devuelve
END FUNCTION
FUNCTION calc_fdarcy_col(self, parRe, fdir, op)
Establece la ruta del directorio de [Link] (fdir), y asigna el resultado a
dir_metnum;
Utilizando dir_metnum, llama al espacio de trabajo, a rooSecantePlus2Ap2.
Llama al atributo self.Q y lo asigna a Q; Llama al atributo [Link] y lo asigna a rug
IF la longitud de op es igual a 2
Si es as, asigna el primer elemento de op a oph, y el segundo elemento de op a opv
IF oph es igual a 2
IF opv es igual a 1
Asigna el primer elemento de parRe a ro, y el segundo elemento de parRe a visd
Divide visd por ro, y asigna el resultado a vis_c
ELSEIF opv es igual a 2
Asigna el primer elemento de parRe a ro, y el segundo elemento de parRe a vis_c
END IF
ELSEIF oph es igual a 1
IF opv es igual a 1
Asigna el primer elemento de parRe a ro, y el segundo elemento de parRe a visd
Divide visd por ro, y asigna el resultado a vis_c
ELSEIF opv es igual a 2
Asigna parRe a vis_c
END IF
END IF
ELSE
Asigna op a opv
IF opv es igual a 1
Asigna el primer elemento de parRe a ro, y el segundo elemento de parRe a visd
Divide visd por ro, y asigna el resultado a vis_c
ELSEIF opv es igual a 2
Asigna parRe a vis_c
END IF
END IF
Evala [Link] y asigna el resultado a veloc
Evala [Link], utilizando como parmetros a veloc y vis_c, y asigna el resultado a
Re.
IF Re es menor de 2300
Llama a FDarcy, utilizando como parmetros a Q, D y rug, y guarda el resultado en el
objeto fdar0
Evala fdar0.FD_flujo_laminar y asigna el resultado a fdar0. (fdar0 hereda las funciones
definidas para la clase FDarcy).
Devuelve f1D
ELSEIF Re es mayor o igual a 2300
Llama a FDarcy, utilizando como parmetros a Q, D, rug, y guarda el resultado en el
objeto fdar0
Evala fdar0.FD_flujoturc_tub_rug_VK, utilizando como argumentos a D y rug, y asigna
el resultado a f0
Coloca a Re en una tupla y asigna el resultado a param_fD;
Asigna 20 a imax
Evala rootSecantePlus2A, utilizando como parmetros a f0, fdar0.FD_flujotrCol,
param_fD, tol = 0.001, imax = 20, store = True, y asigna el resultado a vri
Calcula el nmero de filas y columnas de vri, y asigna el resultado a s1;
IF la longitud de s1 es igual a 1
Extrae el segundo elemento del vector vri, y asigna el resultado a f1D
ELSEIF la longitud del s1 es igual a 2
Extrae el primer elemento de s1, le resta 1 y asigna el resultado a f1
Extrae el valor de la celda de vri, en la fila f1, columna 1 y asigna el resultado a f1D
END IF
Devuelve f1D
END IF
END FUNCTION
END CLASS
Problema del clculo del dimetro de tubera
Programa D_TS_calc.py
FUNCTION D_fun(D, parRe, L, par_calcd, Q, rug, g, dir1, op)
Establece la ruta del directorio de [Link] (dir1), y asigna el resultado a
dir_fric;
Utilizando dir_fric, llama al espacio de trabajo a f_fric2
IF op es diferente de None
Asigna el primer elemento de op a oph; Asigna el segundo elemento de op a opv
IF oph es igual a 2
IF opv es igual a 1
Asigna el primer elemento de parRe a ro, y el segundo elemento de parRe a visd
END IF
IF opv es igual a 2
Asigna el primer elemento de parRe a ro, y el segundo elemento de parRe a vis_c
END IF
Asigna el primer elemento de par_calcd a p1;
Asigna el segundo elemento de par_calcd a p2;
Asigna el tercer elemento de par_calcd a z1
Asigna el cuarto elemento de par_calcd a z2
Calcula el valor equivalente en metros de las prdidas del sistema, utilizando p1, p2, z1,
z2, ro y el balance general de energa mecnica, y asigna el resultado a hDar
ELSEIF oph es igual a 1
Asigna par_calcd a hDar
END IF
END IF
Llama a la clase FDarcy, utilizando como argumentos a Q, D y rug, y asigna el resultado a objf
Evala la funcin ojbf.calc_fdarcy_col, utilizando como parmetros a parRe, dir y op, y asigna
el resultado a f1D.
Evala la funcin [Link], asignando el resultado a v2
Utilizando las ecuaciones para perdidas primarias y secundarias, un valor inicial de D y las
variables f1D, L, v2, construye una expresin a ser resuelta junto con un mtodo de
resolucin de ecuaciones no lineales, como el mtodo de la secante y la guarda en fun.
Devuelve fun
END FUNCTION
FUNCTION calc_DTs(hDar, parRe, L, Q, rug, g, dir1, op)
Establece la ruta del directorio de [Link] (dir1), y asigna el resultado a
dir_metnum;
Asigna hDar a par_calcd
Asigna 20 a imax
Agrupa a parRe, L, par_calcd, Q, rug, g, dir1 y op en una tupla y asigna el resultado a
param_hDar
Asigna 2.54E-2 a D0
Evala rootSecantePlus2A, utilizando como parmetros a D0, D_fun, param_hDar, tol =
0.001, imax, store = True, y asigna el resultado a vri
Devuelve vri
END FUNCTION
Programa Prin_2_D_c.py
Establece la ruta del directorio de D_TS_calc.py, y asigna el resultado a dir2
Imprime un mensaje, pidiendo la rugosidad de la tubera, y asigna el resultado a rug
IF el dato ingresado de rug es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de rug
END IF
Imprime un mensaje, pidiendo la longitud de la tubera, y asigna el resultado a L
IF el dato ingresado de L es de punto flotante y mayor de cero
contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de L
END IF
IF hay disponibilidad del valor equivalente en metros de las prdidas del sistema
Imprime un mensaje, pidiendo este dato y asigna el resultado a prop_fl
IF el dato ingresado de prop_fl es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de prop_fl
END IF
IF hay disponibilidad de la viscosidad dinmica y de la densidad
Imprime un mensaje, pidiendo la densidad del fluido, y asigna el resultado a ro
IF el dato ingresado de ro es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de ro
END IF
Imprime un mensaje, pidiendo este dato y asigna el resultado a visd
IF el dato ingresado de visd es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de visd
END IF
Agrupa en una tupla a ro y visd, y asigna el resultado a parRe
ELSEIF hay disponibilidad de viscosidad cinemtica
Imprime un mensaje, pidiendo este dato y asigna el resultado a vis_c
IF el dato ingresado de vis_c es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de vis_c
END IF
Asigna vis_c a parRe
END IF
ELSEIF no se cuenta con el dato en m equivalente a las prdidas del sistema
Crea un vector de 2 columnas y asigna el resultado a p
Pide para cada columna de p, un valor de presin en Kpa
IF los datos ingresados para p son de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de p
END IF
Multiplica p por 1000, para convertir las presiones en Kpa a Pa
Asigna el primer elemento de p a p1; Asigna el segundo elemento de p a p2
Crea un vector de 2 columnas y asigna el resultado a z
Pide para cada columna de z, un valor de nivel de altura
IF los datos ingresados para z son de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de z
END IF
Asigna el primer elemento de z a z1; Asigna el segundo elemento de z a z2
Agrupa a p1, p2, z1, z2 en una tupla y asigna el resultado a prop_fl
Imprime un mensaje, pidiendo la densidad y asigna el resultado a ro
IF el dato ingresado de ro es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de ro
END IF
IF hay disponibilidad de la viscosidad dinmica
Imprime un mensaje, pidiendo la viscosidad dinmica y asigna el resultado a visd
IF el dato ingresado de visd es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de visd
END IF
Agrupa en una tupla a ro y visd, y asigna el resultado a parRe
ELSEIF hay disponibilidad de viscosidad cinemtica
Imprime un mensaje, pidiendo este dato y asigna el resultado a vis_c
IF el dato ingresado de vis_c es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de vis_c
END IF
Agrupa en una tupla a ro y vis_c y asigna el resultado a parRe
END IF
END IF
Asigna 9.8 a g
Imprime un mensaje, pidiendo el caudal del fluido, y asigna el resultado a Q
IF el dato ingresado de Q es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de Q
END IF
Agrupa a oph y opv en una tupla y asigna el resultado a op
Evala la funcin calc_DTs, utilizando como parmetros a prop_fl, parRe, L, Q, rug, g, dir1 y op,
y asigna el resultado a vri
Calcula el nmero de filas y columnas de vri, y asigna el resultado a s1;
IF la longitud de s1 es igual a 1
Extrae el segundo elemento del vector vri, y asigna el resultado a D
ELSEIF la longitud del s1 es igual a 2
Extrae el primer elemento de s1, le resta 1 y asigna el resultado a f1
Extrae el valor de la celda de vri, en la fila f1, columna 1 y asigna el resultado a D
END IF
Imprime el dimetro de la tubera
Problema del clculo del flujo volumtrico a travs de una tubera
Programa Fl_vol_TubS_calc.py
FUNCTION fl_vol_fun(v2, parRe, prop_fl, prop_tub, g, dir1, op)
Establece la ruta del directorio de [Link] (dir1), y asigna el resultado a
dir_fric;
Utilizando a dir_fric, llama al espacio de trabajo a f_fric2
Asigna el primer elemento de prop_tub a D
Asigna el segundo elemento de prop_tub a rug;
Asigna el tercer elemento de prop_tub a L;
Asigna el cuarto elemento de prop_tub a sumK
IF op es diferente de None
Asigna el primer elemento de op a oph; Asigna el segundo elemento de op a opv
IF oph es igual a 2
IF opv es igual a 1
Asigna el primer elemento de parRe a ro, y el segundo elemento de parRe a visd
IF opv es igual a 2
Asigna el primer elemento de parRe a ro, y el segundo elemento de parRe a vis_c
END
Asigna el primer elemento de prop_fl a p1;
Asigna el segundo elemento de prop_fl a p2;
Asigna el tercer elemento de prop_fl a z1
Asigna el cuarto elemento de prop_fl a z2
Asigna el cuarto elemento de prop_fl a v1
Calcula el valor equivalente en metros de las prdidas del sistema, utilizando p1, p2, z1,
z2, ro y el balance general de energa mecnica, y asigna el resultado a hDar
ELSEIF oph es igual a 1
Asigna par_calcd a hDar
END IF
END IF
Evalua FDarcy(0,D,rug).Qcalc, utilizando como parametros a v2 y asigna el resultado a caudal
Llama a la clase FDarcy ocupando los parametros caudal, D, rug y asigna el resultado a obj
Evala la funcin obj.calc_fdarcy_col, utilizando como parmetros a parRe, dir, y op, y asigna
el resultado a f1D.
Utilizando las ecuaciones para perdidas primarias y secundarias, un valor inicial de v2 y las
variables f1D, L y D, construye una expresin a ser resuelta junto con un mtodo de
resolucin de ecuaciones no lineales, como el mtodo de la secante, y la guarda en fun.
Devuelve fun
END FUNCTION
FUNCTION calc_fl_vol(parRe, prop_fl, prop_tub, g, dir1, op)
Establece la ruta del directorio de [Link] (dir1), y asigna el resultado a
dir_metnum;
Asigna el primer elemento de prop_tub a D
Asigna el segundo elemento de prop_tub a rug;
Asigna el tercer elemento de prop_tub a L;
Asigna el cuarto elemento de prop_tub a sumK
IF op es diferente de None
Asigna el primer elemento de op a oph; Asigna el segundo elemento de op a opv
IF oph es igual a 2
Asigna el primer elemento de prop_fl a p1;
Asigna el segundo elemento de prop_fl a p2;
Asigna el tercer elemento de prop_fl a z1
Asigna el cuarto elemento de prop_fl a z2
Asigna el quinto elemento de prop_fl a v1
IF z1 es mayor que z2
Estima un valor inicial de v2, utilizando z1 y z2 y asigna el resultado a v20
END IF
ELSE IF oph es igual a 1
Asigna prop_fl a hDar
Estima un valor inicial de v2, utilizando hDar, y asigna el resultado a v20
END IF
END IF
Agrupa en una tupla a parRe, prop_fl, prop_tub, g, dir1, op y asigna el resultado a
param_hDar; Asigna 20 a imax
Evala la funcin rootSecantePlus2A, utilizando como parmetros a v20, fl_vol_fun,
param_hDar, tol = 0.001, imax, y store = True y asigna el resultado a vri
Devuelve vri
END FUNCTION
Programa Prin2_fl_vol.py
Establece la ruta del directorio de Fl_vol_TS_calc, y asigna el resultado a dir2
Llama al espacio de trabajo a Fl_vol_TubS_calc
Imprime un mensaje, pidiendo la rugosidad de la tubera, y asigna el resultado a rug
IF el dato ingresado de rug es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de rug
END IF
Imprime un mensaje, pidiendo la longitud de la tubera, y asigna el resultado a L
IF el dato ingresado de L es de punto flotante y mayor de cero
contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de L
END IF
Imprime un mensaje, pidiendo la suma de los coeficientes K de perdidas secundarias, y asigna el
resultado a sumK
IF el dato ingresado de sumK es de punto flotante y mayor de cero
contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de sumK
END IF
IF hay disponibilidad del valor equivalente en metros de las prdidas del sistema
Imprime un mensaje, pidiendo este dato y asigna el resultado a prop_fl
IF el dato ingresado de prop_fl es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de prop_fl
END IF
IF hay disponibilidad de la viscosidad dinmica y de la densidad
Imprime un mensaje, pidiendo la densidad del fluido, y asigna el resultado a ro
IF el dato ingresado de ro es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de ro
END IF
Imprime un mensaje, pidiendo este dato y asigna el resultado a visd
IF el dato ingresado de visd es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de visd
END IF
Agrupa en una tupla a ro y visd, y asigna el resultado a parRe
ELSEIF hay disponibilidad de viscosidad cinemtica
Imprime un mensaje, pidiendo este dato y asigna el resultado a vis_c
IF el dato ingresado de vis_c es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de vis_c
END IF
Asigna vis_c a parRe
END IF
ELSEIF no se cuenta con el dato en m equivalente a las prdidas del sistema
Crea un vector de 2 columnas y asigna el resultado a p
Pide para cada columna de p, un valor de presin en Kpa
IF los datos ingresados para p son de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de p
END IF
Multiplica p por 1000, para convertir las presiones en Kpa a Pa
Asigna el primer elemento de p a p1; Asigna el segundo elemento de p a p2
Crea un vector de 2 columnas y asigna el resultado a z
Pide para cada columna de z, un valor de nivel de altura
IF los datos ingresados para z son de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de z
END IF
Asigna el primer elemento de z a z1; Asigna el segundo elemento de z a z2
Imprime un mensaje, pidiendo este dato y asigna el resultado a v1
IF el dato ingresado de v1 es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de v1
END IF
Agrupa a p1, p2, z1, z2 y v1 en una tupla y asigna el resultado a prop_fl
Imprime un mensaje, pidiendo la densidad y asigna el resultado a ro
IF el dato ingresado de ro es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de ro
END IF
IF hay disponibilidad de la viscosidad dinmica
Imprime un mensaje, pidiendo la densidad y asigna el resultado a ro
IF el dato ingresado de ro es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de ro
END IF
Imprime un mensaje, pidiendo la viscosidad dinmica y asigna el resultado a visd
IF el dato ingresado de visd es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de visd
END IF
Agrupa en una tupla a ro y visd, y asigna el resultado a parRe
ELSEIF hay disponibilidad de viscosidad cinemtica
Imprime un mensaje, pidiendo este dato y asigna el resultado a vis_c
IF el dato ingresado de vis_c es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de vis_c
END IF
Agrupa en una tupla a ro y vis_c y asigna el resultado a parRe
END IF
END IF
Asigna 9.8 a g
Imprime un mensaje, pidiendo el dimetro de la tubera, y asigna el resultado a D
IF el dato ingresado de D es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de D
END IF
Agrupa a D, rug, L, sumK en una tupla y asigna el resultado a prop_tub
Agrupa a oph y opv en una tupla y asigna el resultado a op
Evala la funcin calc_fl_vol, utilizando como parmetros a parRe, prop_fl, prop_tub, g, dir1 y
op, y asigna el resultado a vri
Calcula el nmero de filas y columnas de vri, y asigna el resultado a s1;
IF la longitud de s1 es igual a 1
Extrae el segundo elemento del vector vri, y asigna el resultado a v2
ELSEIF la longitud del s1 es igual a 2
Extrae el primer elemento de s1, le resta 1 y asigna el resultado a f1
Extrae el valor de la celda de vri, en la fila f1, columna 1 y asigna el resultado a v2
END IF
Utilizando PI, D y v2, calcula el flujo volumtrico fl_vol y lo imprime
Problema del clculo de los flujos volumtricos a travs de tuberas en paralelo
Programa Fl_vol_par_calc7.py
CLASS fl_vol_tub_par()
FUNCTION __init__(self, D, L, sumK, rug, caudal, parRe, g, dir)
Inicializa el atributo self.D de la clase fl_vol_tub_par con el valor del argumento de D
Inicializa el atributo self.L de la clase fl_vol_tub_par con el valor del argumento de L
Inicializa el atributo [Link] de la clase fl_vol_tub_par con el valor del argumento de
sumK
Inicializa el atributo [Link] de la clase fl_vol_tub_par con el valor del argumento de rug
Inicializa el atributo [Link] de la clase fl_vol_tub_par con el valor del argumento de
caudal
Inicializa el atributo [Link] de la clase fl_tub_par con el valor del argumento de Re
Inicializa el atributo self.g de la clase fl_tub_par con el valor del argumento de g
Inicializa el atributo [Link] de la clase fl_tub_par con el valor del argumento de dir1
Inicializa el atributo [Link] de la clase fl_tub_par con el valor del argumento de op
Calcula la longitud del vector D, le suma 1, crea un vector de ceros con igual longitud y
asigna el resultado al atributo self.tabs1de la clase fl_tub_par.
Calcula la longitud del vector D, le suma 1, crea un vector de ceros con igual longitud y
asigna el resultado al atributo self.tabs2 de la clase fl_tub_par.
Calcula la longitud del vector D, le suma 1, crea un vector de ceros con igual longitud y
asigna el resultado al atributo self.tabs3 de la clase fl_tub_par.
Calcula la longitud del vector D, le suma 1, crea un vector de ceros con igual longitud y
asigna el resultado al atributo self.tabs4 de la clase fl_tub_par.
END FUNCTION
FUNCTION ftot(self, fd)
Llama al atributo self.L y asigna dicho valor a L
Llama al atributo self.D y asigna dicho valor a D
Llama al atributo [Link] y asigna dicho valor a sumK
Calcula el coeficiente de friccin total (prdidas primarias ms secundarias) y devuelve el
resultado
END FUNCTION
FUNCTION h(self, fric_t, v, g)
Calcula la longitud del vector fric_t, crea un vector de ceros con igual longitud y asigna el
resultado a h_v
FOR la variable i se encuentra entre 0 y el valor numrico de la longitud del vector fric_t
Utilizando la ecuacin para el clculo de prdidas primarias y secundarias, calcula la carga
y asigna el resultado al elemento i de h_v
END FOR
Devuelve h_v
END FUNCTION
FUNCTION desvh(self, h)
Promedia los elementos de h y asigna el resultado a h_prom
Asigna 0 a desv
FOR la variable i se encuentra entre 0 y la longitud del vector h
Resta h_prom al elemento i de h, eleva al cuadrado el resultado, lo suma a desv y asigna
el resultado a desv
END FOR
Divide desv entre la longitude del vector h y lo eleva a 0.5 y devuelve el resultado
END FUNCTION
FUNCTION vel_q(self, h, fric_t)
Llama al atributo self.g y asigna dicho valor a g
Llama al atributo self.D y asigna dicho valor a D
Calcula la longitud del vector D, crea un vector de ceros con igual longitud y asigna el
resultado a vel_qv
FOR la variable i se encuentra entre 0 y el valor numrico de la longitud del vector D
Calcula la velocidad del fluido que circula por la tubera i, y asigna el resultado al
elemento i de vel_qv
END FOR
Devuelve vel_qv
END FUNCTION
FUNCTION tablas(self, i, fd, v, Qs)
IF i es igual a 0
Convierte el arreglo fd a una lista
Convierte el arreglo v a una lista
Convierte el arreglo Qs a una lista
Suma 1 a i, el resultado lo agrupa junto con el vector fd en un arreglo y asigna el
resultado al atributo self.tabs1
Suma 1 a i, el resultado lo agrupa junto con el vector v en un arreglo y asigna el
resultado al atributo self.tabs2
Suma 1 a i, esto lo agrupa en un arreglo, junto con el vector Qs y el resultado de la suma
de los elementos del vector Qs, y lo asigna al atributo self.tabs3
ELSEIF i es mayor que 0
Suma 1 a i, el resultado lo agrupa junto con el vector fd en una tupla, el antiguo valor de
self.tabs1 es agregado a esta tupla, y el resultado se asigna a self.tabs1
Suma 1 a i, el resultado lo agrupa junto con el vector v en una tupla, el antiguo valor de
self.tabs2 es agregado a esta tupla, y el resultado se asigna a self.tabs2
Suma 1 a i, esto lo agrupa junto con el vector Qs y el resultado de la suma de los
elementos del vector Qs, en una tupla, el antiguo valor de self.tabs2 es agregado a esta
tupla, y lo asigna al atributo self.tabs3
END IF
Devuelve self.tabs1, self.tabs2 y self.tabs3
END FUNCTION
FUNCTION Qs_calc(self)
Llama al atributo [Link] y asigna el resultado a dir1
Establece la ruta del directorio de f_fric.py, y asigna el resultado a dir_fric
Llama al atributo self.D y asigna dicho valor a D;
Llama al atributo [Link] y asigna dicho valor a caudal;
Llama al atributo [Link] y asigna dicho valor a rug;
Llama al atributo [Link] y asigna dicho valor a Re
Llama al atributo self.g y asigna dicho valor a g;
Llama al atributo [Link] y asigna dicho valor a op;
Asigna 20 a n_max
Divide caudal entre la longitud del vector D, y asigna el resultado a Q0
Almacena el valor de Q0 en cada uno de los elementos de un arreglo con longitud igual al
de D y asigna el resultado a
FOR la variable i se encuentra entre 0 y n_max
Crea un arreglo de ceros con longitud igual al de D y asigna el resultado a fd
Crea un arreglo de ceros con longitud igual al de D y asigna el resultado a veloc_v1
FOR la variable j se encuentra entre 0 y la longitud de D
Evala la funcin vel, utilizando como parmetros al elemento j de Qs y de D y asigna
el resultado al elemento i de veloc_v1
Evala la funcin calc_fdarcy_col, utilizando a parRe, el elemento j de Qs, de D, y de
rug y tambin a dir y op, y asigna el resultado al elemento j de fd
END FOR
Evalua la funcion [Link], utilizando como parmetro a fd, y asigna el resultado a fric_t
Evalua la funcion self.h, utilizando como parametros a fric_t, veloc_v1, y g
Calcula el promedio de los elementos de h_tub y asigna el resultado a h_prom
Evalua la funcion delh, utilizando como parametros a h_tub
Evalua la funcion self.vel_q, utilizando como parametros a h_prom y fric_t
FOR la variable j se encuentra entre 0 y la longitud del vector D
Evalua la funcion Q_calc, utilizando como parametros al elemento j de veloc_v2 y D y
asigna el resultado al elemento j de Qs
END FOR
Suma los elementos de Qs y lo asigna a Q_t
Calcula la diferencia entre Q_t y caudal, y lo asigna a delQ
Evalua la funcion [Link], utilizando como parametros a i, fd, veloc_v2 y Qs
IF delQ es menor que 0.001 y delh es menor que 0.001
Sale del ciclo FOR
ELSE
FOR la variable j se encuentre entre 0 y la longitud de D
Divide el elemento j de Qs entre Q_t y lo multiplica por caudal
END FOR
IF i es igual a n_max
Sale del ciclo FOR
END IF
END IF
END FOR
Devuelve tab1, tab2, tab3 y Qs
END FUNCTION
END CLASS
Programa Prin2_Tub_par.py
Establece la ruta del directorio de Fl_vol_par_calc, y asigna el resultado a dir2
Llama al espacio de trabajo a Fl_vol_par_calc7.py
Imprime un mensaje, pidiendo el numero de tuberas, y asigna el resultado a num
IF el data ingresado de num es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de num
END IF
Crea un vector de ceros y el resultado lo asigna a D
FOR la variable i se encuentra entre 0 y num
Imprime un mensaje, pidiendo el elemento i de D
IF el elemento i de D es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de D
END IF
END FOR
Crea un vector de ceros y el resultado lo asigna a L
FOR la variable i se encuentra entre 0 y num
Imprime un mensaje, pidiendo el elemento i de L
IF el elemento i de L es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de L
END IF
END FOR
Crea un vector de ceros y el resultado lo asigna a rug
FOR la variable i se encuentra entre 0 y num
Imprime un mensaje, pidiendo el elemento i de rug
IF el elemento i de rug es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de rug
END IF
END FOR
Crea un vector de ceros y el resultado lo asigna a sumK
FOR la variable i se encuentra entre 0 y num
Imprime un mensaje, pidiendo el elemento i de sumK
IF el elemento i de sumK es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de sumK
END IF
END FOR
IF hay disponibilidad de la viscosidad dinmica y de la densidad
Imprime un mensaje, pidiendo la densidad del fluido, y asigna el resultado a ro
IF el dato ingresado de ro es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de ro
END IF
Imprime un mensaje, pidiendo la viscosidad dinmica y asigna el resultado a visd
IF el dato ingresado de visd es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de visd
END IF
Agrupa en una tupla a ro y visd, y asigna el resultado a parRe
ELSEIF hay disponibilidad de viscosidad cinemtica
Imprime un mensaje, pidiendo este dato y asigna el resultado a vis_c
IF el dato ingresado de vis_c es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de vis_c
END IF
Asigna vis_c a parRe
END IF
Asigna 9.8 a g
Imprime un mensaje, pidiendo el caudal total del sistema de tuberas en paralelo, y asigna el
resultado a caudal
IF el dato ingresado de caudal es de punto flotante y mayor de cero
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de caudal
END IF
Llama a fl_vol_tub_par, utilizando como parmetros a D, L, sumK, rug, caudal, parRe, g y dir1, y
guarda el resultado en el objeto obj_fl_par.
Evala la funcin obj_fl.Qs_calc y asigna el resultado a tab1, tab2, tab3 y caudales_tubs.
Imprime tab1, tab2, tab3 y caudales_tubs
Asignatura: Termodinamica Quimica I
Problemas del calculo del volumen molar en ecuaciones cbicas de estado, utilizando
parmetros de la ecuacin de Van der Waals, Redlich-Kwong, Soave-Redlich-Kwong, Peng-
Robinson; y del calculo del volumen molar mediante la ecuacin de Kammerlingh-Onnes y
las correlaciones para el segundo y el tercer coeficientes del virial.
Programa [Link]
FUNCTION fcg(z, data)
Extrae el primer elemento de data y lo asigna a pr;
Extrae el segundo elemento de data y lo asigna a tr
Extrae el segundo elemento de data y lo asigna a Bs
Extrae el segundo elemento de data y lo asigna a Cs
Divide pr entre tr y lo asigna a facpt
Basndose en la ecuacin de estado del virial truncada hasta el tercer termino y utilizando z,
Bs, Cs y facpt, construye una expresin a ser resuelta junto con un mtodo de resolucin de
ecuaciones no lineales, como el mtodo de la secante y la guarda en fun
Devuelve fun
END FUNCTION
FUNCTION dfcg(z, dat)
Extrae el primer elemento de data y lo asigna a pr;
Extrae el segundo elemento de data y lo asigna a tr
Extrae el segundo elemento de data y lo asigna a Bs
Extrae el segundo elemento de data y lo asigna a Cs
Divide pr entre tr y lo asigna a facpt
Calcula la derivada con respecto a z, de la ecuacin de estado del virial truncada hasta el
tercer termino, utilizando z, Bs, Cs y facpt, con el fin de utilizar el resultado en la funcion
rootNewton_cubic2 y la guarda en fun
Devuelve fun
END FUNCTION
FUNCTION ffz(z, cof)
Extrae el primer elemento de cof y lo asigna a fact1;
Extrae el segundo elemento de cof y lo asigna a fact2
Extrae el segundo elemento de cof y lo asigna a fact3
Basndose en la ecuacin de estado cbica genrica y utilizando z, fact1, fact2, fact3
construye una expresin a ser resuelta junto con un mtodo de resolucin de ecuaciones no
lineales, como el mtodo de la secante y la guarda en fun
Devuelve fun
END FUNCTION
FUNCTION dffz(z, cof)
Extrae el primer elemento de cof y lo asigna a fact1;
Extrae el segundo elemento de cof y lo asigna a fact2
Calcula la derivada con respecto a z, de la ecuacin de estado cbica genrica, utilizando z,
fact1 y fact2, con el fin de utilizar el resultado como parmetro en la funcion
rootNewton_cubic2 y la guarda en fun
Devuelve fun
END FUNCTION
FUNCTION fv2(t, tc, p, pc, op, opn, op_extra, r_prin, arg)
Establece la carpeta Metodos numericos como el directorio actual de trabajo, y asigna el
resultado a r;
Utilizando r, llama al espacio de trabajo, a rootNewton_cubic2 y rootRegulaFA2.
Divide t entre tc y guarda el resultado en tr
Divide p entre pc y guarda el resultado en pr
IF arg es igual a None
IF opn es igual a A
Asigna 1 a alf
Asigna 1/8 a ome
Asigna 27/64 a psi
Asigna 0 a sig
Asigna 0 a epsi
ELSEIF opn es igual a B
Eleva tr a -0.5 y asigna el resultado a alf
Asigna 0.08664 a ome
Asigna 0.42748 a psi
Asigna 1 a sig
Asigna 0 a epsi
END IF
ELSE
IF opn es igual a C
Asigna arg a fac
Utilizando la ecuacin de estado de Soave-Redlich-Kwong, calcula la variable alfa y
asigna el resultado a alf
Asigna 0.08664 a ome
Asigna 0.42748 a psi
Asigna 1 a sig
Asigna 0 a epsi
ELSEIF opn es igual a D
Asigna arg a fac
Utilizando la ecuacin de estado de Peng-Robinson, calcula la variable alfa y
asigna el resultado a alf
Asigna 0.0778 a ome
Asigna 0.45724 a psi
Eleva 2 al 0.5, le suma 1, y asigna el resultado a sig
Eleva 2 al 0.5, a 1 resta lo anterior, y asigna el resultado a epsi
ELSEIF opn es igual a E
Asigna arg a fac
Utilizando la ecuacin de estado del virial truncada hasta el tercer termino y a tr y fac,
calcula los coeficientes Bs y Cs
Agrupa en una tupla a pr, tr, Bs y Cs y guarda el resultado en dat
END IF
END IF
Asigna 1 a z0
Asigna 0.00001 a tol
Asigna 100 a imax
IF opn es igual a E
IF op es igual 1 OR op es igual a 3
IF op es igual a 1
Asigna 0.0005 a h
Evalua rootRegula2, utilizando como parametros a z0, fcg, dat, h, tol, imax, r_prin y
store = False y asigna el resultado a vm
Extrae el segundo elemento de vm y lo asigna a lz
ELSE
Evalua rootNewton_cubic2, utilizando como parametros a z0, fcg, dfcg, dat, tol, imax,
y store = False y asigna el resultado a vm
END IF
ELSE
Divide pr entre tr y asigna el resultado a facpt
Utilizando Bs, Cs, facpt, z0 y la ecuacin del virial truncada hasta el tercer trmino,
calcula un nuevo valor de z
Calcula el valor absoluto de la diferencia z z0 y asigna el resultado a dif
WHILE dif es mayor que 0.00001
Asigna z0 a z
Divide pr entre tr, y asigna el resultado a facpt
Utilizando Bs, Cs, facpt, z0 y la ecuacin del virial truncada hasta el tercer trmino,
calcula un nuevo valor de z
Calcula el valor absoluto de la diferencia z z0 y asigna el resultado a dif
END WHILE
Asigna z a lz
END IF
ELSE
Multiplica ome y pr, esto lo multiplica por tr y el resultado lo asigna bet
Multiplica psi y alf, esto lo divide por el producto de ome y tr, y el resultado lo asigna a q
Calcula el primer trmino de la ecuacin cbica genrica de estado, expresada en
trminos de z y lo asigna a fact1
Calcula el segundo trmino de la ecuacin cbica genrica de estado, expresada en
trminos de z y lo asigna a fact2
Calcula el tercer trmino de la ecuacin cbica genrica de estado, expresada en
trminos de z y lo asigna a fact3
Agrupa en una tupla a fact1, fact2 y fact3 y asigna el resultado a cof
Asigna 1 a z0v
IF op es igual a 1 OR op es igual a 3
IF op es igual a 1
Asigna 0.0005 a h
Evalua rootRegula2, utilizando como parametros a z0v, ffz, cof, h, tol, imax, r_prin
y store = False y asigna el resultado a vm
Extrae el segundo elemento de vm y lo asigna a zv
Asigna zv a lz
ELSE
Evalua rootNewton_cubic2, utilizando como parametros a z0v, ffz, dffz, cof, tol,
imax, y store = False y asigna el resultado a vm
Extrae el segundo elemento de vm y lo asigna a zv
Asigna zv a lz
END IF
ELSE
Utiliza la ecuacin dada en Smith, Van Ness & Abbott para el clculo de z de vapor,
mediante el mtodo de sustitucin sucesiva y el resultado lo asigna a zv
Calcula el valor absoluto de la diferencia zv zv0 y asigna el resultado a dif
Asigna 100 a itermax; Asigna 0 a it
WHILE dif es mayor que 0.00001
Asigna z0v a zv
Utiliza la ecuacin dada en Smith, Van Ness & Abbott para el clculo de z de vapor,
mediante el mtodo de sustitucin sucesiva y el resultado lo asigna a zv
Calcula el valor absoluto de la diferencia zv zv0 y asigna el resultado a dif
Suma 1 a it y el resultado lo asigna a it
IF it es mayor que itermax
Sale del ciclo WHILE
END IF
END WHILE
IF it es mayor que itermax
Asigna 0 a lz
ELSE
Asigna zv a lz
END IF
Asigna It a it1
IF op_extra es igual a 1
Asigna bet a z0l
IF op es igual a 1 OR op es igual a 3
IF op es igual a 1
Evalua rootRegula2, utilizando como parametros a z0l, ffz, cof, h, tol, imax, r_prin y
store = False y asigna el resultado a vm
Extrae el segundo elemento de vm y lo asigna a zl
Agrupa en una tupla a zv, zl, bet, q, sig y epsi
ELSE
Evalua rootNewton_cubic2, utilizando como parametros a z0l, ffz, dffz, cof, tol,
imax, y store = False y asigna el resultado a vm
Extrae el segundo elemento de vm y lo asigna a zl
Agrupa en una tupla a zv, zl, bet, q, sig y epsi
END IF
ELSE
Utiliza la ecuacin dada en Smith, Van Ness & Abbott para el clculo de z de lquido,
mediante el mtodo de sustitucin sucesiva y el resultado lo asigna a zl
Calcula el valor absoluto de la diferencia zl z0l y asigna el resultado a dif
Asigna 100 a itermax; Asigna 0 a it2
WHILE dif es mayor que 0.00001
Asigna z0l a zl
Utiliza la ecuacin dada en Smith, Van Ness & Abbott para el clculo de z de lquido,
mediante el mtodo de sustitucin sucesiva y el resultado lo asigna a zl
Calcula el valor absoluto de la diferencia z z0 y asigna el resultado a dif
Suma 1 a it2 y el resultado lo asigna a it2
IF it2 es mayor que itermax
Sale del ciclo WHILE
END IF
END WHILE
IF it1 es menor que itermax AND it2 es menor que itermax
Agrupa zv, zl, bet, q, sig y epsi en una lista y asigna el resultado a lz
ELSE
Asigna 0 a lz
END IF
END IF
END IF
END IF
Devuelve lz
END FUNCTION
Programa prueba_sat.py
FUNCTION calc_phi_lv_cubic(zcat, opn)
Asigna el primer elemento de zcat a zv
Asigna el segundo elemento de zcat a zl
Asigna el tercer elemento de zcat a bet
Asigna el cuarto elemento de zcat a q
Asigna el quinto elemento de zcat a sig
Asigna el sexto elemento de zcat a epsi
IF opn es igual a B OR opn es igual a C OR opn es igual a D
Calcula el trmino I dado en la ecuacin 6.65 b de Smith, Van Ness & Abbott, utilizando
condiciones de vapor saturado y asigna el resultado a I_v
Calcula el trmino I dado en la ecuacin 6.65 b de Smith, Van Ness & Abbott, utilizando
condiciones de lquido saturado y asigna el resultado a I_l
ELSEIF opn es igual a A
Calcula el trmino I para la ecuacin de Van der Waals, utilizando condiciones de vapor
saturado y asigna el resultado a I_v
Calcula el trmino I para la ecuacin de Van der Waals, utilizando condiciones de lquido
saturado y asigna el resultado a I_l
Calcula el coeficiente de fugacidad, a partir de la ecuacin cbica genrica, utilizando
condiciones de vapor saturado, y asigna el resultado a phi_v
Calcula el coeficiente de fugacidad, a partir de la ecuacin cbica genrica, utilizando
condiciones de lquido saturado, y asigna el resultado a phi_l
Agrupa en una lista a phi_v y phi_l y asigna el resultado a tab
Devuelve tab
END FUNCTION
FUNCTION calc_pres(t, tc, pold, pc, op, opn, op_extra, r_prin, fac, zcat0)
Establece la carpeta sub_file como el directorio actual de trabajo, y asigna el
resultado a dir1;
Utilizando dir1, llama al espacio de trabajo, a fv2.
Evala la funcin calc_phi_lv_cubic, utilizando como parmetros a zcat0 y opn, y asigna el
resultado a tab
Extrae el primer elemento de tab y lo asigna a phi_v;
Extrae el segundo elemento de tab y lo asigna a phi_l
Divide el producto pold * phi_l entre phi_v y asigna el resultado a pnew
Calcula ABS(pnew pold) y asigna el resultado a difp; Asigna pnew a pold
Asigna 0 a itp; Asigna 100 a itmax
WHILE difp es mayor que 0.0001
Evala fv2, utilizando como parmetros a t, tc, pnew, pc, op, opn, op_extra, r_prin y fac
y asigna el resultado a zcat
Evala calc_phi_lv_cubic, utilizando como parmetros a zcat y opn, y asigna el
resultado a tab
Extrae el primer elemento de tab y lo asigna a phi_v;
Extrae el segundo elemento de tab y lo asigna a phi_l
Divide el producto pold * phi_l entre phi_v y asigna el resultado a pnew
Calcula ABS(pnew pold) y asigna el resultado a difp; Asigna pnew a pold
Suma 1 a itp y asigna el resultado a itp
IF itp es mayor que itmax
Sale del ciclo WHILE
END IF
END WHILE
Devuelve pnew
END FUNCTION
FUNCTION pres_sat_cubic(t, tc, pold, pc, op, opn, op_extra, fac, r_prin, zcat0)
Establece la carpeta sub_file como el directorio actual de trabajo, y asigna el
resultado a dir1;
Utilizando dir1, llama al espacio de trabajo a fv2
IF zcat es diferente de 0
Extrae el primer elemento de zcat0 y lo asigna a zv0;
Extrae el segundo elemento de zcat0 y lo asigna a zl0
Calcula ABS(zv0 zl0), lo eleva al cuadrado y asigna el resultado a difz0
IF difz0 es menor o igual que 0.0001
Asigna 3 a zeval
WHILE zeval es diferente de 1
Multiplica 0.95 por pold y el resultado lo asigna a pnew; Asigna pnew a pold
Evala la funcin fv2, utilizando los parmetros t, tc, pnew, pc, op, opn, op_extra,
r_prin y fac y asigna el resultado a zcat0
IF zcat0 es diferente de 0
Extrae el primer elemento de zcat0 y lo asigna a zv0;
Extrae el segundo elemento de zcat0 y lo asigna a zl0;
Calcula ABS(zv0 zl0), lo eleva al cuadrado y asigna el resultado a difz0
IF difz0 es mayor que 0.0001
Asigna 1 a zeval
END IF
END IF
END WHILE
Evala calc_pres, utilizando como parmetros a t, tc, pold, pc, op, opn, op_extra, r_prin,
fac, zcat0 y lo asigna a pnew
END IF
ELSE
Asigna 3 a zeval
WHILE zeval es distinto de 1
Multiplica 0.95 por pold y el resultado lo asigna a pnew; Asigna pnew a pold
Evala la funcin fv2, utilizando los parmetros t, tc, pnew, pc, op, opn, op_extra,
r_prin y fac y asigna el resultado a zcat0
IF zcat0 es diferente de 0
Extrae el primer elemento de zcat0 y lo asigna a zv0;
Extrae el segundo elemento de zcat0 y lo asigna a zl0;
Calcula ABS(zv0 zl0), lo eleva al cuadrado y asigna el resultado a difz0
IF difz0 es mayor que 0.0001
Asignar 1 a zeval
END IF
END IF
END WHILE
Evala calc_pres, utilizando los parmetros t, tc, pold, pc, op, opn, op_extra, r_prin, fac y
zcat0, y asigna el resultado a pnew
END IF
Devuelve pnew
END FUNCTION
FUNCTION desc_region_cubic(t, tc, p, pc, op, opn, consat, r_prin)
Establece la carpeta sub_file como el directorio actual de trabajo, y asigna el
resultado a dir1;
Utilizando dir1, llama al espacio de trabajo a fv2
Asigna 83.14 a r
IF opn es distinto de E
IF consat es igual a 1
IF t es menor que tc
Evala la funcin desc_region_cubic_first, utilizando los parmetros t, tc, p, pc, op,
opn y r_prin
END IF
ELSEIF consat es igual a 2
Evala la funcin desc_region_cubic_second, utilizando los parmetros t, tc, p, pc, op,
opn y r_prin
END IF
ELSE
Asigna 3 a op_extra; Asigna 83.14 a r
Imprime un mensaje, pidiendo el factor acntrico del fluido, y asigna el resultado a fac
IF el dato ingresado de fac es de punto flotante
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de fac
END IF
Evala fv2, utilizando los parmetros t, tc, p, pc, op, opn, op_extra, r_prin y fac, y asigna el
resultado a zcat
Multiplica zcat , r, t, esto lo divide entre p, y asigna el resultado a vol_vap
Imprime zcat y vol_vap
END IF
END FUNCTION
FUNCTION desc_region_cubic_first(t, tc, p, pc, op, opn, r_prin)
Establece la carpeta sub_file como el directorio actual de trabajo, y asigna el
resultado a dir1;
Utilizando dir1, llama al espacio de trabajo a fv2
Asigna 83.14 a r
Asigna 1 a op_extra
IF opn es igual a C OR opn es igual a D
Imprime un mensaje, pidiendo el factor acntrico del fluido, y asigna el resultado a fac
IF el dato ingresado de fac es de punto flotante
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de fac
END IF
ELSEIF opn es igual a A OR opn es igual a B
Asigna None a fac
END IF
Evala fv2, utilizando los parmetros t, tc, p, pc, op, opn, op_extra, r_prin y fac, y asigna el
resultado a zcat0
IF zcat0 es distinto de 0
Extrae el primer elemento de zcat0 y lo asigna a zv;
Extrae el segundo elemento de zcat0 y lo asigna a zl
Calcula ABS(zv zl), lo eleva al cuadrado y asigna el resultado a difz
IF difz es mayor que 0.0001
IF se desea los volmenes y factores de compresibilidad de liquido y vapor saturado
Calcula el volumen de vapor saturado con zv, r, t y p y lo asigna a vol_vap
Calcula el volumen de vapor saturado con zl, r, t y p y lo asigna a vol_liq
Imprime zv, zl, vol_vap y vol_liq
ELSEIF solo se desea al volumen y factor de compresibilidad de vapor saturado
Calcula el volumen de vapor saturado con zv, r, t y p y lo asigna a vol_vap
Imprime zv y vol_vap
END IF
ELSE
Imprime un mensaje, indicando que la sustancia esta en la regin de liquido comprimido
END IF
ELSE
Imprime un mensaje, indicando que la sustancia esta en la regin de liquido comprimido
END
END FUNCTION
FUNCTION desc_region_cubic_second(t, tc, p, pc, op, opn, r_prin)
Asigna 83.14 a r
Asigna 1 a op_extra
Establece la carpeta sub_file como el directorio actual de trabajo, y asigna el resultado a
dir1;
Utilizando dir1, llama al espacio de trabajo a fv2
IF opn es igual a C OR opn es igual a D
Imprime un mensaje, pidiendo el factor acntrico del fluido, y asigna el resultado a fac
IF el dato ingresado de fac es de punto flotante
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de fac
END IF
ELSEIF opn es igual a A OR opn es igual a B
Asigna None a fac
END IF
IF t es menor que tc
IF op es distinto de 2
Evala fv2, utilizando los parmetros t, tc, p, pc, op, opn, op_extra, r_prin y fac, y asigna
el resultado a zcat0
Extrae el primer elemento de zcat0 y lo asigna a zv;
Extrae el segundo elemento de zcat0 y lo asigna a zl
Asigna p a pold
Evalua pres_sat_cubic, utilizando como parametros a t, tc, pold, pc, op, opn, op_extra,
fac, r_prin, zcat0 y asigna el resultado a pr
Evalua calc_phi_lv_cubic, utilizando como parametros a zcat0 y opn y asigna el resultado
a tab
Extrae el primer elemento de tab y lo asigna a phi_v
Calcula el producto p*phi_v y el producto pr*phi_v, calcula la diferencia
p*phi pr*phi_v y lo asigna a dif_fug
IF dif_fug es mayor que 0.001
IF p es mayor que pr
Imprime un mensaje indicando que la sustancia se encuentra en la regin de liquido
comprimido
ELSEIF p es menor que pr
Imprime un mensaje, indicando que la sustancia se encuentra en la regin de vapor
sobrecalentado
Calcula el volumen de vapor con zv, r, t y p.
Imprime zv y vol_vap
ELSE
Calcula el volumen de vapor saturado con zv, r, t y p.
Imprime zv y vol_vap
END IF
END IF
ELSEIF op es igual a 2
Evala fv2, utilizando los parmetros t, tc, p, pc, op, opn, op_extra, r_prin y fac, y asigna
el resultado a zcat0
IF zcat es distinto de 0
Extrae el primer elemento de zcat0 y lo asigna a zv;
Extrae el segundo elemento de zcat0 y lo asigna a zl
Asigna p a pold
Evalua pres_sat_cubic, utilizando como parametros a t, tc, pold, pc, op, opn, op_extra,
fac, r_prin, zcat0 y asigna el resultado a pr
Evalua calc_phi_lv_cubic, utilizando como parametros a zcat0 y opn y asigna el
resultado a tab
Extrae el primer elemento de tab y lo asigna a phi_v
Calcula el producto p*phi_v y el producto pr*phi_v, calcula la diferencia
p*phi pr*phi_v y lo asigna a dif_fug
IF dif_fug es mayor que 0.001
IF p es mayor que pr
Imprime un mensaje indicando que la sustancia se encuentra en la regin de
liquido comprimido
ELSEIF p es menor que pr
Imprime un mensaje, indicando que la sustancia se encuentra en la regin de
vapor sobrecalentado
Calcula el volumen de vapor con zv, r, t y p.
Imprime zv y vol_vap
ELSE
IF se desea los volmenes y factores de compresibilidad de liquido y vapor
saturado
Calcula el volumen de vapor saturado con zv, r, t y p y lo asigna a vol_vap
Calcula el volumen de vapor saturado con zl, r, t y p y lo asigna a vol_liq
Imprime zv, zl, vol_vap y vol_liq
ELSEIF solo se desea al volumen y factor de compresibilidad de vapor saturado
Calcula el volumen de vapor saturado con zv, r, t y p y lo asigna a vol_vap
Imprime zv y vol_vap
END IF
END IF
END IF
ELSEIF zcat es igual a 0
Asigna p a pold
Imprime un mensaje, indicando que la sustancia se encuentra en la region de liquid
comprimido
END IF
ELSE
Asigna 2 a op_extra
Evala fv2, utilizando los parmetros t, tc, p, pc, op, opn, op_extra, r_prin y fac, y asigna
el resultado a zcat0
Calcula el volumen de vapor saturado con zv, r, t y p.
Imprime zv y vol_vap
END IF
END IF
END FUNCTION
Programa cal_fz
Establece la carpeta sub_file como el directorio actual de trabajo, y asigna el
resultado a r2;
Utilizando r2, llama al espacio de trabajo a desc_region
Imprime un mensaje, pidiendo la ecuacin cubica de estado a utilizar, y asigna el resultado a
opn
IF el dato ingresado de opn es igual a A OR opn es igual a B OR opn es igual a C OR opn es
igual a C OR opn es igual a D
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de opn
END IF
Imprime un mensaje, pidiendo el mtodo de resolucin para la ecuacin cubica del volumen, y
asigna el resultado a op
IF el dato ingresado de op es igual a 1 OR op es igual a 2 OR op es igual a 3
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de op
END IF
Imprime un mensaje, pidiendo la temperatura, y asigna el resultado a t
IF el dato ingresado de t es de punto flotante o mayor de 0
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de t
END IF
Imprime un mensaje, pidiendo la presion, y asigna el resultado a p
IF el dato ingresado de p es de punto flotante o mayor de 0
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de p
END IF
Imprime un mensaje, pidiendo la temperatura critica, y asigna el resultado a tc
IF el dato ingresado de tc es de punto flotante o mayor de 0
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de tc
END IF
Imprime un mensaje, pidiendo la presin critica, y asigna el resultado a pc
IF el dato ingresado de pc es de punto flotante o mayor de 0
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de pc
END IF
Imprime un mensaje, requiriendo que se especifique si la temperatura y la presin
corresponden a corresponden a condiciones de saturacin y se asigna el resultado a consat
IF el dato ingresado de consat es igual a 1 OR consat es igual a 2
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de consat
END IF
IF el dato ingresado de tc es de punto flotante o mayor de 0
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de tc
END IF
IF el dato ingresado de pc es de punto flotante o mayor de 0
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de tc
END IF
Evalua la funcion desc_region, utilizando como parametros a t, tc, p, pc, op, opn, consat y
r_prin
Asignatura: Termodinamica Quimica II
Problema del calculo de la entalpa, entropa y energa de Gibbs residual de un gas puro,
mediante la ecuacin cbica genrica.
Programa [Link]
FUNCTION ffz(z, cof)
Extrae el primer elemento de cof y lo asigna a fact1;
Extrae el segundo elemento de cof y lo asigna a fact2
Extrae el segundo elemento de cof y lo asigna a fact3
Basndose en la ecuacin de estado cbica genrica y utilizando z, fact1, fact2, fact3
construye una expresin a ser resuelta junto con un mtodo de resolucin de ecuaciones no
lineales, como el mtodo de la secante y la guarda en fun
Devuelve fun
END FUNCTION
FUNCTION dffz(z, cof)
Extrae el primer elemento de cof y lo asigna a fact1;
Extrae el segundo elemento de cof y lo asigna a fact2
Calcula la derivada con respecto a z, de la ecuacin de estado cbica genrica, utilizando z,
fact1 y fact2, con el fin de utilizar el resultado como parmetro en la funcion
rootNewton_cubic2 y la guarda en fun
Devuelve fun
END FUNCTION
FUNCTION fv2(t, tc, p, pc, op, opn, op_extra, r_prin, arg)
Establece la carpeta Metodos numericos como el directorio actual de trabajo, y asigna el
resultado a r;
Utilizando r, llama al espacio de trabajo, a rootNewton_cubic2 y rootRegulaFA2.
Divide t entre tc y guarda el resultado en tr
Divide p entre pc y guarda el resultado en pr
IF arg es igual a None
IF opn es igual a A
Asigna 1 a alf
Asigna 1/8 a ome
Asigna 27/64 a psi
Asigna 0 a sig
Asigna 0 a epsi
ELSEIF opn es igual a B
Eleva tr a -0.5 y asigna el resultado a alf
Asigna 0.08664 a ome
Asigna 0.42748 a psi
Asigna 1 a sig
Asigna 0 a epsi
END IF
ELSE
IF opn es igual a C
Asigna arg a fac
Utilizando la ecuacin de estado de Soave-Redlich-Kwong, calcula la variable alfa y
asigna el resultado a alf
Asigna 0.08664 a ome
Asigna 0.42748 a psi
Asigna 1 a sig
Asigna 0 a epsi
ELSEIF opn es igual a D
Asigna arg a fac
Utilizando la ecuacin de estado de Peng-Robinson, calcula la variable alfa y
asigna el resultado a alf
Asigna 0.0778 a ome
Asigna 0.45724 a psi
Eleva 2 al 0.5, le suma 1, y asigna el resultado a sig
Eleva 2 al 0.5, a 1 resta lo anterior, y asigna el resultado a epsi
ELSEIF opn es igual a E
Asigna arg a fac
Utilizando la ecuacin de estado del virial truncada hasta el tercer termino y a tr y fac,
calcula los coeficientes Bs y Cs
Agrupa en una tupla a pr, tr, Bs y Cs y guarda el resultado en dat
END IF
END IF
Asigna 0.00001 a tol
Asigna 100 a imax
Multiplica ome y pr, esto lo multiplica por tr y el resultado lo asigna bet
Multiplica psi y alf, esto lo divide por el producto de ome y tr, y el resultado lo asigna a q
Calcula el primer trmino de la ecuacin cbica genrica de estado, expresada en
trminos de z y lo asigna a fact1
Calcula el segundo trmino de la ecuacin cbica genrica de estado, expresada en
trminos de z y lo asigna a fact2
Calcula el tercer trmino de la ecuacin cbica genrica de estado, expresada en
trminos de z y lo asigna a fact3
Agrupa en una tupla a fact1, fact2 y fact3 y asigna el resultado a cof
Asigna 1 a z0v
Evalua rootNewton_cubic2, utilizando como parametros a z0v, ffz, dffz, cof, tol, imax,
store = False y asigna el resultado a vm
Extrae el segundo elemento de vm y lo asigna a zv
Agrupa en una lista a zv, zl, bet, q, sig y epsi en una lista y el resultado lo asigna a lz
IF t es menor que tc
Asigna bet a z0l
Evalua rootNewton_cubic2, utilizando como parametros a z0l, ffz, dffz, cof, tol, imax,
store = False y asigna el resultado a vm
Extrae el segundo elemento de vm y lo asigna a zl
Agrupa en una lista a zv, zl, bet, q, sig y epsi en una lista y el resultado lo asigna a lz
END IF
Devuelve lz
END FUNCTION
Programa prueba_sat.py
FUNCTION calc_phi_lv_cubic(zcat, opn)
Asigna el primer elemento de zcat a zv
Asigna el segundo elemento de zcat a zl
Asigna el tercer elemento de zcat a bet
Asigna el cuarto elemento de zcat a q
Asigna el quinto elemento de zcat a sig
Asigna el sexto elemento de zcat a epsi
IF opn es igual a B OR opn es igual a C OR opn es igual a D
Calcula el trmino I dado en la ecuacin 6.65 b de Smith, Van Ness & Abbott, utilizando
condiciones de vapor saturado y asigna el resultado a I_v
Calcula el trmino I dado en la ecuacin 6.65 b de Smith, Van Ness & Abbott, utilizando
condiciones de lquido saturado y asigna el resultado a I_l
ELSEIF opn es igual a A
Calcula el trmino I para la ecuacin de Van der Waals, utilizando condiciones de vapor
saturado y asigna el resultado a I_v
Calcula el trmino I para la ecuacin de Van der Waals, utilizando condiciones de lquido
saturado y asigna el resultado a I_l
END
Calcula el coeficiente de fugacidad, a partir de la ecuacin cbica genrica, utilizando
condiciones de vapor saturado, y asigna el resultado a phi_v
Calcula el coeficiente de fugacidad, a partir de la ecuacin cbica genrica, utilizando
condiciones de lquido saturado, y asigna el resultado a phi_l
Agrupa en una lista a phi_v y phi_l y asigna el resultado a tab
Devuelve tab
END FUNCTION
FUNCTION calc_pres(t, tc, pold, pc, opn, fac, r_prin, zcat0)
Establece la carpeta sat_condicion como el directorio actual de trabajo, y asigna el
resultado a dir1;
Utilizando dir1, llama al espacio de trabajo, a fv2.
Asigna 0 a itp; Asigna 100 a itmax
Evala la funcin calc_phi_lv_cubic, utilizando como parmetros a zcat0 y opn, y asigna el
resultado a tab
Extrae el primer elemento de tab y lo asigna a phi_v;
Extrae el segundo elemento de tab y lo asigna a phi_l
Divide el producto pold * phi_l entre phi_v y asigna el resultado a pnew
Calcula ABS(pnew pold) y asigna el resultado a difp; Asigna pnew a pold
Asigna 0 a itp; Asigna 100 a itmax
WHILE difp es mayor que 0.0001
Evala fv2, utilizando como parmetros a t, tc, pnew, pc, opn, r_prin y fac
y asigna el resultado a zcat
Evala calc_phi_lv_cubic, utilizando como parmetros a zcat y opn, y asigna el
resultado a tab
Extrae el primer elemento de tab y lo asigna a phi_v;
Extrae el segundo elemento de tab y lo asigna a phi_l
Divide el producto pold * phi_l entre phi_v y asigna el resultado a pnew
Calcula ABS(pnew pold) y asigna el resultado a difp; Asigna pnew a pold
Suma 1 a itp y asigna el resultado a itp
IF itp es mayor que itmax
Sale del ciclo WHILE
END IF
END WHILE
Devuelve pnew
END FUNCTION
FUNCTION pres_sat_cubic(t, tc, pold, pc, opn, fac, r_prin, zcat0)
Establece la carpeta sat_condicion como el directorio actual de trabajo, y asigna el
resultado a dir1;
Utilizando dir1, llama al espacio de trabajo a fv2
IF zcat es diferente de 0
Extrae el primer elemento de zcat0 y lo asigna a zv0;
Extrae el segundo elemento de zcat0 y lo asigna a zl0
Calcula ABS(zv0 zl0), lo eleva al cuadrado y asigna el resultado a difz0
IF difz0 es menor o igual que 0.0001
Asigna 3 a zeval
WHILE zeval es diferente de 1
Multiplica 0.95 por pold y el resultado lo asigna a pnew; Asigna pnew a pold
Evala la funcin fv2, utilizando los parmetros t, tc, pnew, pc, opn, r_prin y fac, y
asigna el resultado a zcat0
IF zcat0 es diferente de 0
Extrae el primer elemento de zcat0 y lo asigna a zv0;
Extrae el segundo elemento de zcat0 y lo asigna a zl0;
Calcula ABS(zv0 zl0), lo eleva al cuadrado y asigna el resultado a difz0
IF difz0 es mayor que 0.0001
Asigna 1 a zeval
END IF
END IF
END WHILE
Asigna pnew a pr
ELSE
Asigna pold a pr
END IF
Evala calc_pres, utilizando como parmetros a t, tc, pr, pc, opn, r_prin, fac y zcat0 y
lo asigna a pnew
ELSE
Asigna 3 a zeval
WHILE zeval es distinto de 1
Multiplica 0.95 por pold y el resultado lo asigna a pnew; Asigna pnew a pold
Evala la funcin fv2, utilizando los parmetros t, tc, pnew, pc, opn, r_prin y fac y
asigna el resultado a zcat0
IF zcat0 es diferente de 0
Extrae el primer elemento de zcat0 y lo asigna a zv0;
Extrae el segundo elemento de zcat0 y lo asigna a zl0;
Calcula ABS(zv0 zl0), lo eleva al cuadrado y asigna el resultado a difz0
IF difz0 es mayor que 0.0001
Asignar 1 a zeval
END IF
END IF
END WHILE
Asigna pnew a pr
Evala calc_pres, utilizando los parmetros t, tc, pr, pc, opn, r_prin, fac y zcat0, y asigna
el resultado a pnew
END IF
Devuelve pnew
END FUNCTION
FUNCTION desc_region_cubic(t, tc, p, pc, op, opn, consat, r_prin)
Establece la carpeta sub_file como el directorio actual de trabajo, y asigna el
resultado a dir1;
Utilizando dir1, llama al espacio de trabajo a fv2
IF opn es igual a C OR opn es igual a D
Imprime un mensaje, pidiendo el factor acntrico del fluido, y asigna el resultado a fac
IF el dato ingresado de fac es de punto flotante
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de fac
END IF
ELSEIF opn es igual a A OR opn es igual a B
Asigna None a fac
END IF
Evalua fv2, utilizando como parametros a t, tc, p, pc, opn, r_prin y fac y asigna el
resultado a zcat
IF t es menor que tc
Evala fv2, utilizando los parmetros t, tc, p, pc, opn, r_prin y fac, y asigna el resultado a
zcat0
Asigna p a pold
Evalua pres_sat_cubic, utilizando como parametros a t, tc, pold, pc, opn, fac, r_prin,
zcat0 y asigna el resultado a pr
Evalua calc_phi_lv_cubic, utilizando como parametros a zcat0 y opn y asigna el resultado
a tab
Extrae el primer elemento de tab y lo asigna a phi_v
Calcula el producto p*phi_v y el producto pr*phi_v, calcula la diferencia
p*phi pr*phi_v y lo asigna a dif_fug
IF dif_fug es mayor que 0.001
IF p es mayor que pr
Imprime un mensaje indicando que la sustancia se encuentra en la regin de liquido
comprimido
Asigna 0 a lz
ELSEIF p es menor que pr
Imprime un mensaje, indicando que la sustancia se encuentra en la regin de vapor
Sobrecalentado
Agrupa a zcat0 y fac en una lista, y la asigna a lz
ELSE
Agrupa a zcat0 y fac en una lista, y la asigna a lz
END IF
END IF
ELSE
Agrupa a zcat0 y fac en una lista, y la asigna a lz
END IF
Devuelve lz
END FUNCTION
Programa Hr_Sr_calc.py
FUNCTION l_alf_evalf(lf_alf, tr, param)
Reune en una tupla a tr y param y asigna el resultado a argsf
Evala lf_alf, desempacando los valores de argsf y utilizando dichos como argumentos
Devuelve y
END FUNCTION
FUNCTION fp(tr, fun_alf, param)
Asigna 0.001 a h
Utilizando tr como valor central y h como paso o espaciamiento entre cada elemento, crea un
vector con cinco elementos, y asigna el resultado trv.
Crea una lista vaca y asigna el resultado a fxv
Asigna 0 a i
WHILE i sea menor o igual que 3
Evala l_alf_evalf, utilizando fun_alf, el elemento nmero i de trv y param como
parmetros, y asigna el resultado a f_xv; Agrega f_xv como elemento de fxv
Suma 1 a i y asigna el resultado a i
END WHILE
Utilizando la frmula de diferencias finitas centradas de cinco puntos y fxv, calcula la derivada
de f en x, y asigna el resultado a fun
END FUNCTION
FUNCTION ln_alf(tr, opn, arg)
IF arg es igual a None
IF opn es igual a A
Asigna 1 a alf
ELSEIF opn es igual B
Eleva tr a 0.5 y asigna el resultado a alf
END
ELSE
IF opn es igual a C
Asigna arg a fac
Utilizando la ecuacin de estado de Soave-Redlich-Kwong, calcula la variable alfa y
asigna el resultado a alf
ELSEIF opn es igual a D
Asigna arg a fac
Utilizando la ecuacin de estado de Peng-Robinson, calcula la variable alfa y
asigna el resultado a alf
END IF
END IF
Calcula el logaritmo natural de alf y lo asigna a lf
Devuelve lf
END FUNCTION
FUNCTION calcl(opn, zv, bet, sig, epsi)
IF opn es igual a B OR opn es igual a C OR opn es igual a D
Calcula el trmino I dado en la ecuacin 6.65 b de Smith, Van Ness & Abbott, utilizando
condiciones de vapor saturado y asigna el resultado a fI
ELSEIF opn es igual a A
Calcula el trmino I para la ecuacin de Van der Waals, utilizando condiciones de vapor
saturado y asigna el resultado a fI
END IF
END FUNCTION
FUNCTION calcHr(zv, dlalf, t, tc, q, l, Rcons)
Divide t entre tc y lo asigna a tr
Calcula la entalpia residual dada en la ecuacin 6.67 de Smith, Van Ness & Abbott,
utilizando a zv, dlalf, q, I, Rcons y t, y asigna el resultado a Hr
Devuelve Hr
END FUNCTION
FUNCTION calcSr(zv, dlalf, t, tc, bet, q, l, Rcons)
Divide t entre tc y lo asigna a tr
Calcula la entropia residual dada en la ecuacin 6.68 de Smith, Van Ness & Abbott,
utilizando a zv, dlalf, bet, q, I, Rcons y t, y asigna el resultado a Sr
Devuelve Sr
END FUNCTION
FUNCTION Hr_Sr_imp(lz, t, tc, p, pc, opn)
IF lz es diferente de 0
Asigna el segundo elemento de lz a fac
Agrupa en una tupla a opn y fac y asigna el resultado a param
Asigna el primer elemento de lz a zcat
IF la longitud de lz es igual a 5
Asigna el primer elemento de zcat a zv;
Asigna el segundo elemento de zcat a bet;
Asigna el tercer elemento de zcat a q;
Asigna el cuarto elemento de zcat a sig;
Asigna el quinto elemento de zcat a epsi;
ELSEIF la longitud de lz es igual a 6
Asigna el primer elemento de zcat a zv;
Asigna el tercer elemento de zcat a bet;
Asigna el cuarto elemento de zcat a q;
Asigna el quinto elemento de zcat a sig;
Asigna el sexto elemento de zcat a epsi;
END IF
Divide t entre tc y asigna el resultado a tr
Evalua calcl, utilizando como parametros a opn, zv, bet, sig y epsi, y asigna el resultado a I
Evalua dlalf, utilizando como parametros a tr, ln_alf y param
Asigna 8.314 a Rcons
Evalua calcHr, utilizando como parametros a zv, dlalf, t, tc, q, I y Rcons
Evalua calcSr, utilizando como parametros a zv, dlalf, t, tc, bet, q, I y Rcons
Agrupa en una lista a Hr y Sr, y asigna el resultado a res
ELSE
Asigna 0 a res
END IF
Devuelve res
END FUNCTION
Programa Hr_Sr_prin.py
Establece la ruta absoluta del directorio de desc_region_cubic.py, y asigna el resultado a
r_prin;
Utilizando r_prin, establece la ruta del directorio de desc_region_cubic.py, y asigna el
resultado a r2
Utilizando r2, llama al espacio de trabajo a desc_region_cubic
Utilizando r_prin, establece la ruta del directorio de desc_region_cubic.py, y asigna el
resultado a r3
Utilizando r3, llama al espacio de trabajo a Hr_Sr_imp
Imprime un mensaje, pidiendo la ecuacin cubica de estado a utilizar, y asigna el resultado a
opn
IF el dato ingresado de opn es igual a A OR opn es igual a B OR opn es igual a C OR opn
es igual a C OR opn es igual a D
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de opn
END IF
Imprime un mensaje, pidiendo la temperatura, y asigna el resultado a t
IF el dato ingresado de t es de punto flotante o mayor de 0
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de t
END IF
Imprime un mensaje, pidiendo la temperatura, y asigna el resultado a p
IF el dato ingresado de p es de punto flotante o mayor de 0
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de p
END IF
Imprime un mensaje, pidiendo la temperatura critica, y asigna el resultado a tc
IF el dato ingresado de tc es de punto flotante o mayor de 0
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de tc
END IF
Imprime un mensaje, pidiendo la presin critica, y asigna el resultado a pc
IF el dato ingresado de pc es de punto flotante o mayor de 0
Contina con las siguientes lneas de cdigo
ELSEIF vuelve a pedir el ingreso de pc
END IF
Evalua a desc_region_cubic, utilizando como parametros a t, tc, p, pc, opn y r_prin y asigna el
resultado a lz
Evalua a Hr_Sr_imp, utilizando como parametros a lz, t, tc, p, pc y opn y asigna el resultado a
res
IF res es distinto de 0
Asigna el primer elemento de res a Hr; Asigna el segundo elemento de res a Sr
ELSE
Imprime un mensaje indicando se introduzcan nuevas condiciones de termperatura y presin
END IF
Composicin de equilibrio en reacciones para mezclas de gases ideales.
Programa CalcDH_DS.py
FUNCTION cpH_SVN(t, l1)
Extrae el primer elemento de l1 y lo asigna a ccp
Extrae el segundo elemento de l1 y lo asigna a Rcons
Extrae el primer elemento de ccp y lo asigna a A
Extrae el segundo elemento de ccp y lo asigna a B
Extrae el tercer elemento de ccp y lo asigna a C
Extrae el cuarto elemento de ccp y lo asigna a D
Calcula la capacidad calorfica de gas ideal, con los factores A, B, C y D y la temperatura t,
segn la ecucion dada por Smith, Van Ness & Abbot, apndice C.1 y asigna el resultado a y
Devuelve y
END FUNCTION
FUNCTION cpH_Prausnitz_4ed(t, l1)
Extrae el primer elemento de l1 y lo asigna a A
Extrae el segundo elemento de l1 y lo asigna a B
Extrae el tercer elemento de l1 y lo asigna a C
Extrae el cuarto elemento de l1 y lo asigna a D
Calcula la capacidad calorfica de gas ideal, con los factores A, B, C y D y la temperatura t,
segn la ecucion dada por Reid, Prausnitz & Poling, pag. 657 y asigna el resultado a y
Devuelve y
END FUNCTION
FUNCTION cpH_Prausnitz_5ed(t, l1)
Extrae el primer elemento de l1 y lo asigna a ccp
Extrae el segundo elemento de l1 y lo asigna a Rcons
Extrae el primer elemento de ccp y lo asigna a a0
Extrae el segundo elemento de ccp y lo asigna a a1
Extrae el tercer elemento de ccp y lo asigna a a2
Extrae el cuarto elemento de ccp y lo asigna a a3
Extrae el quinto elemento de ccp y lo asigna a a4
Calcula la capacidad calorfica de gas ideal, con los factores a0, a1, a2, a3 y a4 y la
temperatura t, segn la ecucion dada por Poling, Prausnitz & OConnell y asigna el
resultado a y
Devuelve y
END FUNCTION
FUNCTION cpH_Perry7_1(t, l1)
Extrae el primer elemento de l1 y lo asigna a C1
Extrae el segundo elemento de l1 y lo asigna a C2
Extrae el tercer elemento de l1 y lo asigna a C3
Extrae el cuarto elemento de l1 y lo asigna a C4
Extrae el quinto elemento de l1 y lo asigna a C5
Calcula la capacidad calorfica de gas ideal, con los factores C1, C2, C3, C4 y C5 y la
temperatura t, segn la ecucion dada por Perry, 7ma ed., pag. 2 182 y asigna el resultado a
y
Devuelve y
END FUNCTION
FUNCTION cpH_Perry7_2(t, l1)
Extrae el primer elemento de l1 y lo asigna a C1
Extrae el segundo elemento de l1 y lo asigna a C2
Extrae el tercer elemento de l1 y lo asigna a C3
Extrae el cuarto elemento de l1 y lo asigna a C4
Extrae el quinto elemento de l1 y lo asigna a C5
Calcula la capacidad calorfica de gas ideal, con los factores C1, C2, C3, C4 y C5 y la
temperatura t, segn la ecucion dada por Perry, 7ma ed., pag. 2 182 y asigna el resultado a
y
Devuelve y
END FUNCTION
FUNCTION cpH_Perry7_3(t, l1)
Extrae el primer elemento de l1 y lo asigna a C1
Extrae el segundo elemento de l1 y lo asigna a C2
Extrae el tercer elemento de l1 y lo asigna a C3
Extrae el cuarto elemento de l1 y lo asigna a C4
Calcula la capacidad calorfica de gas ideal, con los factores C1, C2, C3 y C4 y la
temperatura t, segn la ecucion dada por Perry, 7ma ed., pag. 2 182 y asigna el resultado a
y
Devuelve y
END FUNCTION
FUNCTION cpH_Perry8_1(t, l1)
Extrae el primer elemento de l1 y lo asigna a C1
Extrae el segundo elemento de l1 y lo asigna a C2
Extrae el tercer elemento de l1 y lo asigna a C3
Extrae el cuarto elemento de l1 y lo asigna a C4
Extrae el quinto elemento de l1 y lo asigna a C5
Calcula la capacidad calorfica de gas ideal, con los factores C1, C2, C3, C4 y C5 y la
temperatura t, segn la ecucion dada por Perry, 8va ed., pag. 2 175 y asigna el resultado a
y
Devuelve y
END FUNCTION
FUNCTION cpH_Perry8_2(t, l1)
Extrae el primer elemento de l1 y lo asigna a C1
Extrae el segundo elemento de l1 y lo asigna a C2
Extrae el tercer elemento de l1 y lo asigna a C3
Extrae el cuarto elemento de l1 y lo asigna a C4
Extrae el quinto elemento de l1 y lo asigna a C5
Calcula la capacidad calorfica de gas ideal, con los factores C1, C2, C3, C4 y C5 y la
temperatura t, segn la ecucion dada por Perry, 8va ed., pag. 2 181 y asigna el resultado a
y
Devuelve y
END FUNCTION
FUNCTION Int_cpH_evalf(t, lf_cpH, numc, pathDir)
IF numc es igual a 1
Evalua el primer elemento de lf_cpH (una funcion), utilizando como parametros a t y
el segundo elemento lf_cpH
ELSEIF numc es mayor de 1
Utilizando pathDir, llama al espacio de trabajo a func_cad.py
Asigna func a car
Asigna el primer elemento de lf_cpH a lf; Asigna el segundo elemento de lf_cpH a lc
Asigna el tercer elemento de lf_cpH a lv
Evalua func_def, utilizando como parametros a car y numc y asigna el resultado a vf
Con la funcion de Python exec, ejecuta vf
Evalua func_cad_impH, utilizando como parametros a car, lv y numc, y asigna el resultado
a sum_fun
Con la funcion de Python eval, evalua la cadena de caracteres almacenada en sum_fun y
asigna el resultado a y
END IF
Devuelve y
END FUNCTION
FUNCTION Int_cpS_evalf(t, lf_cpS, numc, pathDir)
IF numc es igual a 1
Evalua el primer elemento de lf_cpS (una funcion), utilizando como parametros a t y
el segundo elemento lf_cpS, dividido entre t
ELSEIF numc es mayor de 1
Utilizando pathDir, llama al espacio de trabajo a func_cad.py
Asigna func a car
Asigna el primer elemento de lf_cpS a lf; Asigna el segundo elemento de lf_cpS a lc
Asigna el tercer elemento de lf_cpS a lv
Evalua func_def, utilizando como parametros a car y numc y asigna el resultado a vf
Con la funcion de Python exec, ejecuta vf
Evalua func_cad_impS, utilizando como parametros a car, lv y numc, y asigna el resultado
a sum_fun
Con la funcion de Python eval, evalua la cadena de caracteres almacenada en sum_fun y
asigna el resultado a y
END IF
Devuelve y
END FUNCTION
Programa [Link]
FUNCTION consEq(numc, T, T0, lf_cpH, lf_cpS, pathDir, itemRom, delH0, delG0)
Utilizando pathDir, establece la ruta del directorio de [Link], y asigna el
resultado a dir2
Utilizando dir2, llama al espacio de trabajo a RomberT
Utilizando pathDir, establece la ruta del directorio de CalcDH_DS.py, y asigna el
resultado a dir3
Utilizando dir3, llama al espacio de trabajo a CalcDH_DS
Asigna 8.314 a Rcons
Agrupa a Int_cpH_evalf, lf_cpH y pathDir en una lista y asigna el resultado a lf_cpH_evalf
Agrupa a Int_cpS_evalf, lf_cpS y pathDir en una lista y asigna el resultado a lf_cpS_evalf
Asigna 0.0001 a tol
Evalua Romberg, utilizando como parametros a numc, T0, T, lf_cpH_evalf, itemRom y tol, y
Asigna el resultado a IntH
Divide el primer elemento de IntH entre Rcons y asigna el resultado a delH
Evalua Romberg, utilizando como parametros a numc, T0, T, lf_cpS_evalf, itemRom y tol, y
Asigna el resultado a IntS
Divide el primer elemento de IntH entre Rcons y asigna el resultado a delS
Calcula K0, utilizando a delG0, Rcons y T0
Calcula K1, utilizando a delH0, T0, T, Rcons y T0
Calcula K2, utilizando a delH, T y delS
Multiplica K0, K1 y K2 y asigna el resultado a K
Devuelve K
END FUNCTION
FUNCTION comEq(e, mol_ini, lv, K, P)
Calcula la longitude de lv y la asigna a n
Crea una lista vacia y la asigna a molv
FOR la variable i se encuentra entre 0 y n
Calcula los moles de la especie qumica i, utilizando al elemento i de mol_ini y de lv, y al
avance de reaccion e, y lo agrega como elemento a molv
END FOR
Suma los elementos de molv y el resultado lo asigna a molT
Crea una lista vacia y la asigna a compv; Asigna 1 a fc
FOR la variable i se encuentra entre 0 y n
Divide el elemento i de molv entre molT, y lo agrega como nuevo elemento de compv
IF el elemento i de lv es distinto de 0
Eleva el elemento i de compv al elemento i de lv, y el resultado lo multiplica por fc
ELSEIF el elemento i de lv es igual a 0
Multiplica fc por 1, y el resultado lo asigna a fc
END IF
END FOR
Suma los elementos de lv y lo asigna a v
Utilizando la ecuacin 13.28 dada por Smith, Van Ness y Abbott, y las variables K, P, v y fc,
construye una expresin a ser resuelta junto con un mtodo de resolucin de ecuaciones no
lineales, como el mtodo de la secante y la guarda en fun.
Devuelve fun
END FUNCTION
FUNCTION Rlimit( mol_ini, lv, K)
Calcula la longitude de mol_ini y la asigna a n
Asigna 0 a cont
Crea una lista vacia y la asigna a e_limit
Crea una lista vacia y la asigna a iv
FOR la variable i se encuentra entre 0 y n
IF el elemento i de lv es menor que 0
IF ABS(elemento i de lv) es mayor que 0
Tomando como base a la especie i, calcula el avance de reaccin, asumiendo una
reaccin completa, y agrega el resultado como nuevo elemento de e_limit
Agrega i como nuevo elemento de iv
Suma 1 a cont y asigna el resultado a cont
END IF
END IF
END FOR
Asigna 0 a cont
Calcula la longitud de e_limit y lo asigna a lnr
Crea una matriz de ceros con lnr filas y n columnas y asigna el resultado a mol_rxn
Crea una lista vacia y la asigna a e_res
Crea una lista vacia y la asigna a iv2
FOR la variable i se encuentra entre 0 y n
IF alguno de los valores de i coincide con alguno de los valores de iv
FOR la variable j se encuentra entre 0 y n
Calcula los moles reaccionados utilizando al elemento cont de e_limit, y al elemento j
de lv y de mol_ini, y guarda el resultado en la fila cont, columna j de mol_rxn
(cont equivale al numero de reactivos y j al numero de especies)
END FOR
IF todos los elementos de la fila cont de mol_rxn son mayor que 0
Extrae el elemento cont de e_limit y lo agrega como nuevo elemento de e_res
Agrega cont como nuevo elemento de iv2
END IF
Suma 1 a cont y asigna el resultado a cont
END IF
END FOR
Extrae el elemento 0 de iv2, lo utiliza en e_limit, y asigna el resultado a e_max
Devuelve fun
END FUNCTION
FUNCTION defConsEq(datc, T, P, v, pathDir)
Calcula la longitud de v y asigna el resultado a n
IF hay disponibilidad de una constante de equilibrio
Imprime un mensaje pidiendo por la constante de equilibrio y asigna el resultado a K
IF K es de punto flotante y mayor de 0
Continua con las siguientes lneas de cdigo
ELSE
Vuelve a pedir a K
END IF
ELSEIF no hay disponibilidad de una constante de equilibrio
IF el cambio de entalpia es independiente de la temperatura
Imprime un mensaje pidiento la temperatura T0 de reaccin
IF T0 es de punto flotante y mayor de cero
Continua con las siguientes lneas de cdigo
ELSE
Vuelve a pedir a T0
END IF
Imprime un mensaje pidiento la temperatura K0 de reaccin
IF K0 es de punto flotante y mayor de cero
Continua con las siguientes lneas de cdigo
ELSE
Vuelve a pedir a K0
END IF
Imprime un mensaje pidiento el cambio de entalpia de reaccin y lo asigna a delHrxn
IF delHrxn es de punto flotante
Continua con las siguientes lneas de cdigo
ELSE
Vuelve a pedir a delHrxn
END IF
Calcula la constante de equilibrio, utilizando la ecuacin 13.15 de Smith, Van Ness &
Abbott y lo asigna a K
ELSEIF el cambio de entalpia no es independiente de la temperatura
Establece la ruta del directorio de ccp_ing.py y lo asigna a ring
Utilizando ring, llama al espacio de trabajo a ccp_ing
Establece la ruta del directorio de [Link] y lo asigna a ring
Utilizando rcK, llama al espacio de trabajo a cK
Imprime un mensaje pidiendo la temperatura inicial y asigna el resulato a T0
IF T0 es de punto flotante y mayor de 0
Continua con las siguientes lneas de codigo
ELSE
Vuelve a pedir T0
END IF
Imprime un mensaje pidiendo el cambio de entalpia de reaccin y lo asigna a delHrxn
IF delHrxn es de punto flotante y mayor de 0
Continua con las siguientes lneas de codigo
ELSE
Vuelve a pedir delHrxn
END IF
Imprime un mensaje pidiendo el cambio de entalpia de reaccin y lo asigna a delGrxn
IF delGrxn es de punto flotante y mayor de 0
Continua con las siguientes lneas de codigo
ELSE
Vuelve a pedir delGrxn
END IF
Asigna 8.314 a Rcons; Asigna el primer elemento de datc a numR;
Asigna el segundo elemento de datc a numP;
Asigna el tercer elemento de datc a numI;
Suma numR a numP y asigna el resultado a numP2
Crea una lista vacia y la asigna a catalog
FOR la variable i se encuentra entre i y n
IF i es menor que numR
Suma 1 a i, lo convierte a una cadena de caracteres, esto es agregado al carcter
R y asigna el resultado a st1
ELSEIF i es mayor o igual que numR y menor que numP2
Suma 1 a i, le resta numR, lo convierte a una cadena de caracteres, esto es
agregado al carcter P y asigna el resultado a st1
END IF
IF numI es distinto de 0
IF i es mayor que numP2
Suma 1 a i, le resta numP2, lo convierte a una cadena de caracteres, esto es
agregado al carcter I y asigna el resultado a st1
END IF
END IF
Evalua ccp_ing, utilizando como parametros a pathDir, st1 y Rcons y el resultado
lo asigna como nuevo elemento de catalog
END FOR
Crea una lista vacia y la asigna a lc
Crea una lista vacia y la asigna a lf
FOR i se encuentre entre 0 y n
Asigna el elemento de la fila i, columna 0 a valc
Asigna el elemento de la fila i, columna 1 a valf
IF la longitud del elemento i de catalog es igual a 3
Agrupa a valc y Rcons en una lista y la asigna a valc
END IF
Agrega valc como nuevo elemento de lc
Agrega valf como nuevo elemento de lf
END FOR
Agrupa a lf, lv y v en una lista y asigna el resultado a lf_cpH
Agrupa a lf, lv y v en una lista y asigna el resultado a lf_cpS
Asigna 10 a itemRom
Evalua consEq, utilizando como parametros n, T, T0, lf_cpH, lf_cpS, pathDir, itemRom,
delHrxn0 y delGrxn0, y asigna el resultado a K
END IF
END IF
Devuelve a K
END FUNCTION
Programa ccp_ing.py
FUNCTION ccp_ing(pathDir, st1, Rcons)
Establece la ruta del directorio de CalcDH_DS.py y lo guarda en dir1
Utilizando dir1 llama al espacio de trabajo a CalcDH_DS
Imprime un mensaje pidiendo el libro, del cual se obtendrn las constantes para las
capacidade calorficas en funcion de la temperatura y guarda el resultado en bk
IF bk es entero y es 1, 2, 3, 4 o 5
Continua con las siguientes lneas de cdigo
ELSE
Vuelve a pedir bk
END IF
IF bk es igual a 3
Pide el tipo de ecuacin de capacidad calorfica a utilizar y guarda el resultado en eco
IF eco es distinto a A, B, o C
Vuelve a pedir eco
ELSE
Continua con las siguientes lneas de cdigo
END IF
ELSEIF bk es igual a 4
Pide el tipo de ecuacin de capacidad calorfica a utilizar y guarda el resultado en eco
IF eco es distinto a A o B
Vuelve a pedir eco
ELSE
Continua con las siguientes lneas de cdigo
END IF
END IF
IF bk es igual a 1
Imprime un mensaje pidiendo 4 constantes y asigna el resultado en la lista ccp
IF los elementos de ccp no son de punto flotante o su numero es diferente de 4
Vuelve a pedir las constantes
ELSE
Continua con las siguientes lneas de codigo
END IF
Agrupa en una lista a ccp y cpH_Prausnitz_4ed y asigna el resultado a catg1
Devuelve a catg1
ELSEIF bk es igual a 2
Imprime un mensaje pidiendo 5 constantes y asigna el resultado en la lista ccp
IF los elementos de ccp no son de punto flotante o su numero es diferente de 5
Vuelve a pedir las constantes
ELSE
Continua con las siguientes lneas de codigo
END IF
Agrupa en una lista a ccp, cpH_Prausnitz_5ed y Rcons, y asigna el resultado a catg1
Devuelve a catg1
ELSEIF bk es igual a 3
IF eco es igual a A
Imprime un mensaje pidiendo 5 constantes y asigna el resultado en la lista ccp
IF los elementos de ccp no son de punto flotante o su numero es diferente de 5
Vuelve a pedir las constantes
ELSE
Continua con las siguientes lneas de codigo
END IF
Agrupa en una lista a ccp y cpH_Perry7_1, y asigna el resultado a catg1
Devuelve a catg1
ELSEIF eco es igual a B
Imprime un mensaje pidiendo 5 constantes y asigna el resultado en la lista ccp
IF los elementos de ccp no son de punto flotante o su numero es diferente de 5
Vuelve a pedir las constantes
ELSE
Continua con las siguientes lneas de codigo
END IF
Agrupa en una lista a ccp y cpH_Perry7_2, y asigna el resultado a catg1
Devuelve a catg1
ELSEIF eco es igual a C
Imprime un mensaje pidiendo 4 constantes y asigna el resultado en la lista ccp
IF los elementos de ccp no son de punto flotante o su numero es diferente de 4
Vuelve a pedir las constantes
ELSE
Continua con las siguientes lneas de codigo
END IF
Agrupa en una lista a ccp y cpH_Perry7_3, y asigna el resultado a catg1
Devuelve a catg1
ELSEIF bk es igual a 4
IF eco es igual a A
Imprime un mensaje pidiendo 5 constantes y asigna el resultado en la lista ccp
IF los elementos de ccp no son de punto flotante o su numero es diferente de 5
Vuelve a pedir las constantes
ELSE
Continua con las siguientes lneas de codigo
END IF
Agrupa en una lista a ccp y cpH_Perry8_1, y asigna el resultado a catg1
Devuelve a catg1
ELSEIF eco es igual a B
Imprime un mensaje pidiendo 5 constantes y asigna el resultado en la lista ccp
IF los elementos de ccp no son de punto flotante o su numero es diferente de 5
Vuelve a pedir las constantes
ELSE
Continua con las siguientes lneas de codigo
END IF
Agrupa en una lista a ccp y cpH_Perry8_2, y asigna el resultado a catg1
Devuelve a catg1
ELSEIF bk es igual a 5
Imprime un mensaje pidiendo 3 constantes y asigna el resultado en la lista ccp
IF los elementos de ccp no son de punto flotante o su numero es diferente de 3
Vuelve a pedir las constantes
ELSE
Continua con las siguientes lneas de codigo
END IF
Agrupa en una lista a ccp, cpH_SVN y Rcons, y asigna el resultado a catg1
Devuelve a catg1
END IF
END FUNCTION
Programa func_cad.py
FUNCTION cad_comp_imp(car, n)
Crea una lista vacia y la asigna a st1
Crea una lista vacia y la asigna a st2
Crea una cadena de caracteres vacia y la asigna a st3
Crea una cadena de caracteres vacia y la asigna a st4
FOR i se encuentre entre 0 y n
Utiliza i y car para construir parte de una cadena de caracteres a imprimir y la asigna a
st1t
Agrega st1t como nuevo elemento de la lista st1
Utiliza i y car para construir parte de una cadena de caracteres a evaluar y la asigna a
st2t
Agrega st2t como nuevo elemento de la lista st2
Une st3 y el elemento i de st1 en una cadena de caracteres a imprimir y asigna el resultado
a st3
Une st4 y el elemento i de st2 en una cadena de caracteres a evaluar y asigna el resultado a
st4
END FOR
Agrupa en una lista a st3 y st4 y lo devuelve
END FUNCTION
(En esta funcion se toman en cuenta la posibilidad de que n sea igual o mayor de 2 elementos, o
que i se encuentre al principio, medio o final de la cadena de caracteres final)
FUNCTION com_ing(n, car, sf_aux1, sf_aux2, sf_aux3)
Crea una cadena de caracteres vacia y la asigna a st2
Crea una lista vacia y la asigna a st
FOR i se encuentra entre 0 y n
Utiliza car e i para construir parte de una cadena de caracteres a imprimir y la asigna a st_t
Agrega st_t como nuevo elemento de st
Une el elemento i de st y st2 en una cadena de caracteres a imprimir y asigna el resultado a
st2
END FOR
Imprime sf_aux1
IF no es posible evaluar st2 dentro de la funcion input (resultado asignado a c_st), o si los
elementos de c_st, separados como sub-cadenas de caracteres y agrupados dentro de la lista
ctem no son de punto flotante, o si el numero de elementos ingresados es menor que n, o si
cualquiera de los elementos ingresados es menor que 0
Imprime mensajes de error con sf_aux2, sf_aux3 y sf_aux1
Vuelve a pedir c_st, y a hacer las operaciones necesarias para obtener ctem
ELSE
Continua con las siguientes lneas de cdigo
END IF
Asigna ctem a c
Devuelve c
END FUNCTION
FUNCTION com_ingR(n, car, sf_aux1, sf_aux2, sf_aux3)
Crea una cadena de caracteres vacia y la asigna a st2
Crea una lista vacia y la asigna a st
FOR i se encuentra entre 0 y n
Utiliza car e i para construir parte de una cadena de caracteres a imprimir y la asigna a st_t
Agrega st_t como nuevo elemento de st
Une el elemento i de st y st2 en una cadena de caracteres a imprimir y asigna el resultado a
st2
END FOR
Imprime sf_aux1
IF no es posible evaluar st2 dentro de la funcion input (resultado asignado a c_st), o si los
elementos de c_st, separados como sub-cadenas de caracteres y agrupados dentro de la lista
ctem no son de punto flotante, o si el numero de elementos ingresados es menor que n, o si
cualquiera de los elementos ingresados es mayor que 0
Imprime mensajes de error con sf_aux2, sf_aux3 y sf_aux1
Vuelve a pedir c_st, y a hacer las operaciones necesarias para obtener ctem
ELSE
Continua con las siguientes lneas de cdigo
END IF
Asigna ctem a c
Devuelve c
END FUNCTION
FUNCTION func_def(car, n)
Crea una cadena de caracteres vacia y la asigna a st4
Crea una lista vacia y la asigna a st2
FOR i se encuentra entre 0 y n
Utiliza car e i para construir parte de una cadena de caracteres a imprimir y la asigna a st2_t
Agrega st2_t como nuevo elemento de st2
Une el elemento i de st2 y st4 en una cadena de caracteres a evaluar y asigna el resultado
a st4
END FOR
Devuelve st4
END FUNCTION
FUNCTION func_cad_impH(car, lv, n)
Crea una cadena de caracteres vacia y la asigna a st4
Crea una lista vacia y la asigna a st2
FOR i se encuentra entre 0 y n
Utiliza car e i para construir parte de una cadena de caracteres a evaluar y la asigna a st2_t
Agrega st2_t como nuevo elemento de st2
Une el elemento i de st2 y st4 en una cadena de caracteres a evaluar y asigna el resultado
a st4
END FOR
Devuelve st4
END FUNCTION
FUNCTION func_cad_impS(car, lv, n)
Crea una cadena de caracteres vacia y la asigna a st4
Crea una lista vacia y la asigna a st2
FOR i se encuentra entre 0 y n
Utiliza car e i para construir parte de una cadena de caracteres a evaluar y la asigna a st2_t
Agrega st2_t como nuevo elemento de st2
Une el elemento i de st2 y st4 en una cadena de caracteres a evaluar y asigna el resultado
a st4
END FOR
Devuelve st4
END FUNCTION
Calc_EqC.py
Establece la ruta del directorio de [Link] y guarda el resultado en dir1
Utilizando a dir1, llama al espacio de trabajo a cK
Establece la ruta del directorio de func_cad.py y guarda el resultado en dir3
Utilizando a dir3, llama al espacio de trabajo a func_cad
Establece la ruta del directorio de [Link] y guarda el resultado en dir4
Utilizando a dir4, llama al espacio de trabajo a defK
Establece la ruta del directorio de rootRegulaFa_mod.py y guarda el resultado en dir5
Utilizando a dir5, llama al espacio de trabajo a rootRegula_mod
Imprime un mensaje pidiendo por el numero de reactivos y asigna el resultado a numR
IF numR no es entero o es menor de 0
Vuelve a pedir a numR
ELSE
Continua con las siguientes lneas de cdigo
END IF
Asigna R a car
Crea una cadena de caracteres y la asigna a sf_aux1
Crea una cadena de caracteres y la asigna a sf_aux2
Crea una cadena de caracteres y la asigna a sf_aux3
Evalua com_ing, utilizando como parametros a numR, car, sf_aux1, sf_aux2 y sf_aux3 y asigna
el resultado a CantR
Asigna vR a car
Crea una cadena de caracteres y la asigna a sf_aux1
Crea una cadena de caracteres y la asigna a sf_aux2
Crea una cadena de caracteres y la asigna a sf_aux3
Evalua com_ingR, utilizando como parametros a numR, car, sf_aux1, sf_aux2 y sf_aux3 y asigna
el resultado a vR
Imprime un mensaje pidiendo por el numero de productos y asigna el resultado a numP
IF numP no es entero o es menor de 0
Vuelve a pedir a numP
ELSE
Continua con las siguientes lneas de cdigo
END IF
Asigna P a car
Crea una cadena de caracteres y la asigna a sf_aux1
Crea una cadena de caracteres y la asigna a sf_aux2
Crea una cadena de caracteres y la asigna a sf_aux3
Evalua com_ing, utilizando como parametros a numP, car, sf_aux1, sf_aux2 y sf_aux3 y asigna
el resultado a CantP
Asigna vP a car
Crea una cadena de caracteres y la asigna a sf_aux1
Crea una cadena de caracteres y la asigna a sf_aux2
Crea una cadena de caracteres y la asigna a sf_aux3
Evalua com_ing, utilizando como parametros a numR, car, sf_aux1, sf_aux2 y sf_aux3 y asigna
el resultado a vP
Forma un arreglo con los elementos de CantR y de CantP y lo asigna a Cant
Forma un arreglo con los elementos de vR y de vtP y lo asigna a v
Imprime un mensaje, pidiendo especificar si hay compuestos inertes y el resultado lo asigna a
CmI
IF CmI es menor de 0 o no es de tipo entero
Vuelve a pedir a CmI
ELSE
Continua con las siguientes lneas de cdigo
END IF
Asigna 0 a numI
IF CmI es igual a 1
Imprime un mensaje, requiriendo ingresar el numero de compuestos inertes presentes
IF numI es menor que 0 o no es de tipo entero
Vuelve a pedir a numI
ELSE
Continua con las siguientes lneas de cdigo
END IF
Asigna I a car
Crea una cadena de caracteres y la asigna a sf_aux1
Crea una cadena de caracteres y la asigna a sf_aux2
Crea una cadena de caracteres y la asigna a sf_aux3
Evalua com_ing, utilizando como parametros a numP, car, sf_aux1, sf_aux2 y sf_aux3 y
asigna el resultado a CantIn
Crea un vector de ceros y asigna el resultado a vI
Agrupa en un arreglo a Cant y CantIn y lo asigna a Cant
Agurpa en un arreglo a v y vI y asigna el resultado a v
Calcula la longitud de Cant y lo asigna a n
Imprime un mensaje, pidiendo el ingreso de la temperatura y asignando el resultado a T
IF T es menor que 0 o no es de tipo entero
Vuelve a pedir T
ELSE
Continua con las siguientes lneas de cdigo
END IF
Imprime un mensaje, pidiendo el ingreso de la temperatura y asignando el resultado a P
IF T es menor que 0 o no es de tipo entero
Vuelve a pedir P
ELSE
Continua con las siguientes lneas de cdigo
END IF
Agrupa en una lsta a numR, numP y numI y la asigna a datc
Evalua defConsEq, utilizando como parametros a datc, T, P, v y r_prin, y asigna el resultado a K
Evalua Rlimit, utilizando como parametros a Cant, v y K, y asigna el resultado a e0
Asigna 0.00001 a tol
Asigna 100 a imax
Agrupa en una tupla a Cant, v, K y P y asigna el resultado a param
Asigna 0.0000005 a h; Resta h a e0 y asigna el resultado a e0
Agrupa h y e0 en una lista y asigna el resultado a bracket
Evalua rootRegula_FA_mod, utilizando como parametros a e0, comEq, param, bracket, tol,
imax, store = True y asigna el resultado a vm1
Calcula las dimensiones de vm1 y las guarda en s1
IF la longitud de s1 es igual a 1
Asigna el segundo elemento de vm1 a e_eq
ELSEIF la longitud de s1 es igual a 2
Resta 1 al primer elemento de de s1 y lo asigna a f1
Extrae el elemento de la fila f1, columna 1 de vm1 y lo asigna a e_eq
END IF
Crea una lista vacia y la asigna a molv; Crea una lista vacia y la asigna a compv
FOR i se encuentra entre 0 y n
Calcula la cantidad de moles de la especie i, utilizando el elemento i de Cant, de v y a e_eq
y asigna el resultado a compv
END FOR
Calcula la suma de los elementos de molv y asigna el resultado a molT
FOR i se encuentra entre 0 y n
Calcula la concentracin molar de la especie i, utilizando el elemento i de molv y a molT
y asigna el resultado a compv
END FOR
Suma numR a numP y asigna el resultado a numP2
Asigna desde el primer hasta el numR elemento de molv a R
Asigna desde el elemento numR hasta el numP2 elemento de molv a P
Asigna desde el primer hasta el numR elemento de compv a cR
Asigna desde el elemento numR hasta el numP2 elemento de compv a cP
Imprime e_eq
Asigna R a car
Evalua cad_comp_imp, utilizando a car y numR, y asigna el resultado a catR_car
Asigna el primer elemento de catR_car a stRcar;
Crea una cadena de caracteres con el segundo elemento de catRcar, y asigna el resultado a
stReval
Imprime un mensaje, donde se utiliza a stRc como cadena de caracteres a imprimir y a stReval
como cadena de caracteres a evaluar como codigo
Asigna P a car
Evalua cad_comp_imp, utilizando a car y numP, y asigna el resultado a catP_car
Asigna el primer elemento de catP_car a stPcar;
Crea una cadena de caracteres con el segundo elemento de catPcar, y asigna el resultado a
stPeval
Imprime un mensaje, donde se utiliza a stPc como cadena de caracteres a imprimir y a stPeval
como cadena de caracteres a evaluar como codigo
Asigna cR a car
Evalua cad_comp_imp, utilizando a car y numR, y asigna el resultado a catR_car
Asigna el primer elemento de catR_car a stRcar;
Crea una cadena de caracteres con el segundo elemento de catRcar, y asigna el resultado a
stReval
Crea una cadena de caracteres, utilizando a stPcar y la asigna a stPc
Imprime un mensaje, donde se utiliza a stRc como cadena de caracteres a imprimir y a stReval
como cadena de caracteres a evaluar como codigo
Asigna cP a car
Evalua cad_comp_imp, utilizando a car y numP, y asigna el resultado a catP_car
Asigna el primer elemento de catP_car a stPcar;
Crea una cadena de caracteres con el segundo elemento de catPcar, y asigna el resultado a
stPeval
Crea una cadena de caracteres, utilizando a stPcar y la asigna a stPc
Imprime un mensaje, donde se utiliza a stPc como cadena de caracteres a imprimir y a stPeval
como cadena de caracteres a evaluar como codigo
IF CmI es igual a 1
Suma numP2 a numI y asigna el resultado a numI2
Asigna desde el elemento numP2 hasta numI2 de molv
Asigna desde el elemento numP2 hasta numI2 de compv
Asigna I a car
Evalua cad_comp_imp, utilizando como parametros a car y numI, y asigna el resultado
catI_car
Asigna el primer elemento de catI_car a stIcar;
Crea una cadena de caracteres con el segundo elemento de catIcar, y asigna el resultado a
stIc
Crea una cadena de caracteres, utilizando a stIcar y la asigna a stIc
Imprime un mensaje, donde se utiliza a stIc como cadena de caracteres a imprimir y a
stIeval como cadena de caracteres a evaluar como codigo