%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% TÍTULO: balance.m
% DETALLE: Programa que facilita la resolución de un balance de energía con
% reacción química, leyendo base de datos de capacidad calorífica y
% entalpías de formación. Este programa debe hacerse correr siempre junto
% al archivo Excel 'parametros.xlsx' guardando ambos en la misma carpeta
% AUTOR: Julio Romero
% FECHA: 01/01/2014
% OBSERVACIONES:Balance para reactor adiabático problema 4.1 Texto del
% Profesor Horacio Correa. 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% N° DE FILA DE CADA COMPONENTE
%1: Acetileno                2: Ácido clorhídrico    3: Ácido sulfúrico
%4: Agua                     5: Amoníaco             6: Anhídrido carbónico
%7: Anhídrido sulfúrico      8: Anhídrido sulfuroso  9: Benceno
%10: Butano normal          11: Butadieno-1,3       12: Buteno-1
%13: Ciclohexano            14: Cloro               15: Etano
%16: Etanol                 17: Etileno             18: Formaldehído
%19: Heptano normal         20: Hepteno-1           21: Hexano normal
%22: Hexeno-1               23: Hidrógeno           24: Metano
%25: Metanol                26: Monóxido de carbono 27: Nitrógeno
%28: Octano normal          29: Octeno-1            30: Óxido nítrico (NO)
%31: Oxígeno                32: Pentano normal      33: Penteno-1
%34: Propano                35: Propileno           36: Tolueno
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

close all           % Cierra todas las ventanas gráficas
clear all           % Borra todas las variables del espacio de trabajo
format long         % Imprime números en formato largo
clc                 % Borra lo impreso en la ventana del espacio de trabajo

% Archivo excel identificado
filename='parametros.xlsx'; 

% Lea los datos numéricos desde el archivo Excel
% (sólo la primera hoja, define Matrix)
Matrix=xlsread(filename); 

% Define tamaño de la matriz de datos para saber cuantos compuestos hay
% m corresponde al n° de compuestos (n° de filas en el archivo .xlsx
[m,n]=size(Matrix);

a=Matrix(:,2);    % Selección de columnas 2, parámetro a (Cálculo de Cp)
b=Matrix(:,3);    % Selección de columnas 3, parámetro b (Cálculo de Cp)
c=Matrix(:,4);    % Selección de columnas 4, parámetro c (Cálculo de Cp)
hf=Matrix(:,5);   % Selección de columna 5 con datos de Hf

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% HASTA ESTA LÍNEA EL PROGRAMA ES GENÉRICO, SE SUGIERE NO EDITAR NADA SOBRE
% ESTA LÍNEA DE COMANDOS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% INICIO DE LÍNEAS EDITABLES
% DATOS DEL PROBLEMA
Te=600;         %Temperatura de entrada (K)
T_iter=Te:0.3:1000;  % Conjunto de valores de iteración de temperatura de salida (K)
Tref=298;       % Temperatura de referencia (K)

% N° DE CADA COMPONENTE (ARCHIVO EXCEL)
c1=25;  % Metanol
c2=31;  % Oxígeno
c3=27;  % Nitrógeno
c4=18;  % Formaldehído
c5=23;  % Hidrógeno
c6=6;   % Anhídrido carbónico
c7=4;   % Agua

% FLUJOS DE ENTRADA AL REACTOR_____________________________________________
wec1=100;   % Flujo de metanol (mol/h)
wec2=27.3;  % Flujo de oxígeno (mol/h)
wec3=102.7; % Flujo de nitrógeno(mol/h)
wec4=0;     % Flujo de formaldehído (mol/h)
wec5=0;     % Flujo de hidrógeno (mol/h)
wec6=0;     % Flujo de anhídrido carbónico (mol/h)
wec7=0;     % Flujo de agua (mol/h)

% Cálculo de la entalpía de formación de la corriente de entrada
% (cal/h)
Hfe=wec1*hf(c1)+wec2*hf(c2)+wec3*hf(c3)+wec4*hf(c4)+wec5*hf(c5)+wec6*hf(c6)+wec7*hf(c7);

% CAPACIDADES CALORÍFICAS A LA ENTRADA
Cpec1=a(c1)+b(c1)*Te+c(c1)*Te^2;
Cpec2=a(c2)+b(c2)*Te+c(c2)*Te^2;
Cpec3=a(c3)+b(c3)*Te+c(c3)*Te^2;
Cpec4=a(c4)+b(c4)*Te+c(c4)*Te^2;
Cpec5=a(c5)+b(c5)*Te+c(c5)*Te^2;
Cpec6=a(c6)+b(c6)*Te+c(c6)*Te^2;
Cpec7=a(c7)+b(c7)*Te+c(c7)*Te^2;

% Cálculo de wCpdT de entrada (cal/h)
wCpdTe=(wec1*Cpec1+wec2*Cpec2+wec3*Cpec3+wec4*Cpec4+wec5*Cpec5+wec6*Cpec6+wec7*Cpec7)*(Te-Tref);

% FLUJOS DE SALIDA DEL REACTOR_____________________________________________
wsc1=30.02; % Flujo de metanol(mol/h)
wsc2=9.79;  % Flujo de oxígeno(mol/h)
wsc3=102.7; % Flujo de nitrógeno (mol/h)
wsc4=67.34; % Flujo de formaldehído (mol/h)
wsc5=40.24; % Flujo de hidrógeno (mol/h)
wsc6=2.64;   % Flujo de anhídrido carbónico (mol/h)
wsc7=32.38;  % Flujo de agua (mol/h)

% Cálculo de la entalpía total de formación de la corriente de salida
% (cal/h)
Hfs=wsc1*hf(c1)+wsc2*hf(c2)+wsc3*hf(c3)+wsc4*hf(c4)+wsc5*hf(c5)+wsc6*hf(c6)+wsc7*hf(c7);

% CAPACIDADES CALORÍFICAS A LA ENTRADA (para todo el intervalo T_iter)
Cpsc1=a(c1)+b(c1)*T_iter+c(c1)*T_iter.^2;
Cpsc2=a(c2)+b(c2)*T_iter+c(c2)*T_iter.^2;
Cpsc3=a(c3)+b(c3)*T_iter+c(c3)*T_iter.^2;
Cpsc4=a(c4)+b(c4)*T_iter+c(c4)*T_iter.^2;
Cpsc5=a(c5)+b(c5)*T_iter+c(c5)*T_iter.^2;
Cpsc6=a(c6)+b(c6)*T_iter+c(c6)*T_iter.^2;
Cpsc7=a(c7)+b(c7)*T_iter+c(c7)*T_iter.^2;

% Cálculo de wCp de salida (cal/h K) (Genera los cálculos para todo el
% intervalo de temperaturas T_iter
wCps=(wsc1*Cpsc1+wsc2*Cpsc2+wsc3*Cpsc3+wsc4*Cpsc4+wsc5*Cpsc5+wsc6*Cpsc6+wsc7*Cpsc7);

% FIN DE LÍNEAS EDITABLES

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% A PARTIR DE ESTA LÍNEA EL PROGRAMA ES GENÉRICO, SE SUGIERE NO EDITAR NADA
% BAJO ESTA LÍNEA DE COMANDOS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% CÁLCULO DE LA TEMPERATURA DE SALIDA (BALANCE DE ENERGÍA EN REACTOR
% ADIABÁTICO)______________________________________________________________
Tp=(wCpdTe+Hfe-Hfs)*(wCps.^-1)+Tref; % Temperatura recalculada (K)

% CÁLCULO DE LA DIFERENCIA ENTRE LA TEMPERATURA SUPUESTA Y CÁLCULADA
dif=T_iter-Tp;
i=find(abs(dif)<0.1);
solution=Tp(i);
disp('La iteración del Problema EJEMPLO 4.1 entrega una temperatura ')
disp(['de los productos a la salida del reactor de ' num2str(solution) ' K'])

subplot(2,1,1)
plot(T_iter,Tp)
xlabel('Temperatura estimada (K)')
ylabel('Temperatura calculada (K)')
grid

subplot(2,1,2)
plot(T_iter,dif)
xlabel('Temperatura estimada (K)')
ylabel('Diferencia de temperaturas (K)')
grid

