Sei sulla pagina 1di 163

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 rootNewton.sci

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 rootRegulaFA2p2.sci

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 rootSecantePlus2Ap3.sci

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 rootSecantePlus2Ap2.sci (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 rootSecantePlus2Ap2.py (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 rootSecantePlus2Ap2.sci (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 rootSecantePlus2Ap2.sci (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 rootSecantePlus2Ap2.py (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 fv2.py

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 fv2.py

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 cK.py

FUNCTION consEq(numc, T, T0, lf_cpH, lf_cpS, pathDir, itemRom, delH0, delG0)

Utilizando pathDir, establece la ruta del directorio de RomberT.sci, 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 cK.py 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 cK.py 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 defK.py 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 RomberT.py

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 rootRegulaFA2p2.py

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 rootSecantePlus2Ap2.py

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 self.rug 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 self.rug 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 self.rug 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 rootSecantePlus2Ap2.py (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 self.rug 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 self.vel y asigna el resultado a veloc


Evala self.Reynolds, 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 rootSecantePlus2Ap2.py (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 objf.vel, 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 rootSecantePlus2Ap2.py (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 rootSecantePlus2Ap2.py (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 rootSecantePlus2Ap2.py (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 self.sumK de la clase fl_vol_tub_par con el valor del argumento de
sumK
Inicializa el atributo self.rug de la clase fl_vol_tub_par con el valor del argumento de rug
Inicializa el atributo self.caudal de la clase fl_vol_tub_par con el valor del argumento de
caudal
Inicializa el atributo self.Re 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 self.direc de la clase fl_tub_par con el valor del argumento de dir1
Inicializa el atributo self.op 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 self.sumK 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 self.direc 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 self.caudal y asigna dicho valor a caudal;
Llama al atributo self.rug y asigna dicho valor a rug;
Llama al atributo self.Re y asigna dicho valor a Re
Llama al atributo self.g y asigna dicho valor a g;
Llama al atributo self.op 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 self.ftot, 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 self.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 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 fv2.py

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 fv2.py

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 cK.py

FUNCTION consEq(numc, T, T0, lf_cpH, lf_cpS, pathDir, itemRom, delH0, delG0)

Utilizando pathDir, establece la ruta del directorio de RomberT.py, 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 cK.py 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 cK.py 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 defK.py 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

Potrebbero piacerti anche