Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cmath>
- #include<time.h>
- #include<stdlib.h>
- #include<fstream>
- #include<iomanip>
- #include<Eigen/Dense>
- #include<ceres/ceres.h>
- #include<vector>
- #include<algorithm>
- #include<numeric>
- #include<stdexcept>
- #include <ceres/jet.h>
- using namespace std;
- using namespace Eigen;
- static const std::vector<double> temperaturas= {32.018,35,40,45,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,212,220,230,240,250,260,270,280,290,300,320,340,360,380,400,420,440,460,480,500,520,540,560,580,600,620,640,660,680,700,705.44};
- static const std::vector<double> entalpia_vaporizacion= {1075.4,1073.7,1070.9,1068.1,1065.2,1059.6,1053.9,1048.3,1042.6,1037.0,1031.3,1025.5,1019.8,1013.9,1008.1,1002.1,996.2,990.2,984.1,977.8,971.6,970.3,965.3,958.8,952.3,945.6,938.8,932.0,924.9,917.8,910.5,895.4,879.5,862.9,845.4,826.9,807.2,786.3,764.1,740.3,714.8,687.2,657.4,625.0,589.4,549.7,505.0,453.3,391.1,309.8,167.5,0.0};
- static const std::vector<double> presion_vapor= {0.08866,0.09992,0.12166,0.14748,0.17803,0.2563,0.3632,0.5073,0.6988,0.9503,1.2763,1.6945,2.225,2.892,3.722,4.745,5.996,7.515,9.343,11.529,14.125,14.698,17.188,20.78,24.97,29.82,35.42,41.85,49.18,57.53,66.98,89.60,117.93,152.92,195.60,247.1,308.5,381.2,466.3,565.5,680.0,811.4,961.5,1131.8,1324.3,1541.0,1784.4,2057.1,2362,2705,3090,3204};
- static const std::vector<double> entalpia_vapor_saturado= {1075.4,1076.7,1078.9,1081.1,1083.3,1087.7,1092.0,1096.4,1100.7,1105.0,1109.3,1113.5,1117.8,1121.9,1126.1,1130.1,1134.2,1138.2,1142.1,1145.9,1149.7,1150.5,1153.5,1157.1,1160.7,1164.2,1167.6,1170.9,1174.1,1177.2,1180.2,1185.8,1190.8,1195.2,1199.0,1202.0,1204.1,1205.3,1205.5,1204.6,1202.5,1198.9,1193.8,1187.0,1178.0,1166.4,1151.4,1131.9,1105.5,1066.7,990.2,902.5};
- static const std::vector<double> cp_values= {0.4501,0.4505,0.4511,0.4518,0.4525,0.454,0.4555,0.4571,0.4588,0.4606,0.4625,0.4645,0.4668,0.4693,0.472,0.475,0.4784,0.4821,0.4862,0.4907,0.4957,0.4968,0.5013,0.5074,0.5141,0.5215,0.5295,0.5383,0.5479,0.5582,0.5694,0.5943,0.6226,0.6546,0.6905,0.7306,0.7755,0.8262,0.8839,0.9506,1.029,1.122,1.237,1.38,1.567,1.82,2.185,2.762,3.823,6.529,32.81,1.851E+13};
- /*Esto es para el NaOH*//*Funciones auxiliares*/
- bool validar_coeficientes();
- bool validar_presiones();
- bool validar_concentraciones();
- bool validar_temperatura();
- bool validar_alimentacion();
- bool ingresar_orden_efectos();
- void imprimir_datos();
- /*ARREGLOS*/
- int opcion;
- unsigned short int io[9][2],size,termodinamica,efecto[9],incognita[]= {10,10,10,10,10,10,10,10,10,10},label;
- double economia,deltaT0;
- double L[9];
- double T[9];
- double U[8];
- double P[9];
- double x[9];
- double H[9];
- double hx[9];
- double Tsat[9];
- double deltaT[9];
- double V[9];
- double epe[9];
- double Licor[9];
- double A[9];
- double M[9][9];
- double m[9][9];
- double N[8][2];
- double hvap[9];
- double Q[8];
- /*FUNCIONES*/
- double contar(double n);
- double determinante(double b[9][9],unsigned short int n);
- double T_sat(double P);
- double P_sat(double T);
- double Hg(double T);
- double EPE(double x,double T);
- double Hx(double x,double T);
- double CP(double T);
- double Hvap(double T);
- bool orden_efectos(int n);
- bool resolver(void);
- bool resolver2(void);
- void escribir(void);
- void borrar(void);
- void latex(void);
- void generar_datos_aleatorios(void);
- int main() {
- borrar();
- cout<<"EVAPORADORES M\351LTIPLES EFECTOS (2-9) para NaOH"<<endl;
- cout<<"Creado por Jorge Armando L\242pez Contreras"<<endl;
- do {
- cout<<endl<<"*********************************************"<<endl;
- cout<<"\250Qu\202 desea hacer?"<<endl;
- cout<<"(1) Resolver un problema"<<endl;
- cout<<"(2) Generar un problema"<<endl;
- cout<<"Su opci\242n es: ";
- cin>>opcion;
- if(opcion<1 or opcion>2) {
- cout<<"ERROR: NO EXISTE ESA OPCI\340N"<<endl;
- cout<<"Intente otra vez"<<endl;
- }
- } while(opcion<1 or opcion>2);
- cout<<endl<<"*********************************************"<<endl;
- do {
- cout<<endl<<"*********************************************"<<endl;
- cout<<"\250Qu\202 datos termodin\240micos usar?"<<endl;
- cout<<"(1) Geankoplis"<<endl;
- cout<<"(2) IAPWS (M\265S EXACTO)"<<endl;
- cout<<"Su opci\242n es: ";
- cin>>termodinamica;
- if(termodinamica<1 or termodinamica>2) {
- cout<<"ERROR: NO EXISTE ESA OPCI\340N"<<endl;
- cout<<"Intente otra vez"<<endl;
- }
- } while(termodinamica<1 or termodinamica>2);
- cout<<endl<<"*********************************************"<<endl;
- switch(opcion) {
- case 1: {
- do {
- do {
- cout<<"Ingrese el n\243mero de efectos (2-9): ";
- cin >> size;
- if (size<2||size>9) {
- cout<<"ERROR: ingrese un valor entre 2 y 9."<<endl;
- }
- } while (size<2||size>9);
- while(!ingresar_orden_efectos());
- while(!validar_alimentacion());
- while(!validar_temperatura());
- while(!validar_concentraciones());
- while(!validar_presiones());
- while(!validar_coeficientes());
- imprimir_datos();
- cout<<"\250 Est\240 correcto los datos?"<<endl;
- cout<<"Ingrese (1) para continuar"<<endl;
- cout<<"Ingrese (2) para corregir"<<endl;
- cin>>opcion;
- } while(opcion!=1);
- if(resolver()) {
- escribir();
- } else {
- cout<<"El problema no tiene soluci\242n"<<endl;
- }
- break;
- }
- default: {
- do {
- cout<<"Ingrese el n\243mero de efectos (2-9): ";
- cin>>size;
- if(size<2||size>9) {
- cout<<"ERROR: Ingrese un valor entre 2 y 9."<<endl;
- }
- } while(size<2||size>9);
- do {
- cout<<"Ingrese el orden de los efectos (por ejemplo 312, 132, 123 para 3 efectos): ";
- cin>>opcion;
- } while(!orden_efectos(opcion));
- generar_datos_aleatorios();
- break;
- }
- system("PAUSE");
- return 0;
- }
- }
- bool resolver(void) {
- double suma;
- unsigned short int contador,iteracion=0;
- /*Analizando las entradas y salidas de cada efecto*/
- for(int i=0; i<size; i++) {
- io[efecto[i]][sale]=efecto[i];
- if(i==0) {
- io[efecto[i]][entra]=0;
- } else {
- io[efecto[i]][entra]=efecto[i-1];
- }
- }
- /*PASO 2: Balance de Materia*/
- L[efecto[size-1]]=L[0]*x[0]/x[efecto[size-1]];
- for(int i=0; i<=size; i++) {
- V[i]=(L[0]-L[efecto[size-1]])/size;
- }
- // Inicializar el flujo msico de lquido en el primer efecto
- L[efecto[0]]=L[0]-V[efecto[0]];
- // Calcular los flujos msicos de lquido en los efectos restantes
- for (int i=1; i<size; ++i) {
- L[efecto[i]]=L[efecto[i-1]]-V[efecto[i]];
- }
- for(int i=0; i<size; i++) {
- x[efecto[i]]=L[0]*x[0]/L[efecto[i]];
- }
- Tsat[size]=T_sat(P[size]);
- Tsat[0]=T_sat(P[0]);
- /*Paso 3: Suponer las temperaturas de saturación de cada etapa intermedia*/
- for(int i=1; i<size; i++) {
- Tsat[i]=Tsat[0]-i*(Tsat[0]-Tsat[size])/size;
- }
- int aver=-1;
- unsigned short int contador2=0;
- do {
- double V0=V[0];
- do {
- contador=0;
- for(int i=0; i<=size; i++) {
- Licor[i]=L[i];
- }
- for(int i=0; i<size; i++) {
- x[efecto[i]]=L[0]*x[0]/L[efecto[i]];
- }
- if(iteracion==0) {
- for(int i=0; i<size; i++) {
- if(i==0) {
- T[1]=Tsat[0]-deltaT[1];
- } else {
- T[i+1]=T[i]-epe[i-1]-deltaT[i+1];
- }
- }
- for(int i=1; i<size; i++) {
- Tsat[i]=T[i]-epe[i-1];
- }
- }
- for(int i=0; i<size; i++) {
- epe[i]=EPE(x[i+1],Tsat[i+1]);
- }
- if(iteracion==0) {
- deltaT[0]=0;
- for(int i=0; i<size; i++) {
- deltaT[0]=deltaT[0]+epe[i];
- }
- deltaT[0]=Tsat[0]-Tsat[size]-deltaT[0];
- suma=0;
- for(int i=0; i<size; i++) {
- suma=suma+1/U[i];
- }
- for(int i=1; i<=size; i++) {
- deltaT[i]=deltaT[0]*(1/U[i-1])/suma;
- }
- deltaT[efecto[0]]=deltaT[efecto[0]]+size;
- for(int i=2; i<=size; i++) {
- deltaT[i]=deltaT[i]-1;
- }
- }
- /*Aqu puede estar la nueva funcin*/
- for(int i=0; i<size; i++) {
- if(i==0) {
- T[1]=Tsat[0]-deltaT[1];
- } else {
- T[i+1]=T[i]-epe[i-1]-deltaT[i+1];
- }
- }
- for(int i=1; i<size; i++) {
- Tsat[i]=T[i]-epe[i-1];
- }
- for(int i=0; i<=size; i++) {
- if(i<size) {
- H[i]=Hg(Tsat[i+1])+CP(Tsat[i+1])*epe[i];
- }
- hx[i]=Hx(x[i],T[i]);
- if(i==0) {
- hvap[i]=Hvap(Tsat[i]);
- } else {
- hvap[i]=Hvap(Tsat[i])+CP(Tsat[i])*epe[i-1];
- }
- }
- for(int i=0; i<=9; i++) {
- for(int j=0; j<=9; j++) {
- M[i][j]=0.0;
- }
- }
- for(int i=0; i<size; i++) {
- aver++;
- /*Para alimentacin*/if(i==0) {
- if(aver==0) {
- cout<<"ALIMENTACION"<<endl;
- cout<<"Se llena la fila M["<<efecto[i]<<"]"<<endl;
- }
- /*Caso 1:*/if(efecto[i]==1) {/*Caso trivial: La alimentacin ocurre en el primer efecto*/
- if(aver==0) {
- cout<<"CASO 1"<<endl<<endl;
- }
- M[efecto[i]-1][0]=hvap[efecto[i]-1];
- M[efecto[i]-1][io[efecto[i]][sale]]=H[efecto[i]-1]-hx[io[efecto[i]][sale]];
- N[efecto[i]-1][0]=(H[efecto[i]-1]-hx[io[efecto[i]][entra]])*L[io[efecto[i]][entra]];
- }/*Caso 2:*/if(efecto[i]!=1 and io[efecto[i]][sale]==io[efecto[i]-1][entra] and io[efecto[i]-1][sale]!=io[efecto[size-1]][sale]) {
- if(aver==0) {
- cout<<"CASO 2"<<endl<<endl;
- }
- M[efecto[i]-1][io[efecto[i]][sale]]=hvap[efecto[i]-1]-hx[io[efecto[i]][sale]]+H[efecto[i]-1];
- M[efecto[i]-1][io[efecto[i]-1][sale]]=-hvap[efecto[i]-1];
- N[efecto[i]-1][0]=L[io[efecto[i]][entra]]*(H[efecto[i]-1]-hx[io[efecto[i]][entra]]);
- }/*Caso 3:*/if(efecto[i]!=1 and io[efecto[i]][sale]!=io[efecto[i]-1][entra] and io[efecto[i]-1][sale]!=io[efecto[size-1]][sale]) {
- if(aver==0) {
- cout<<"CASO 3"<<endl<<endl;
- }
- M[efecto[i]-1][io[efecto[i]][sale]]=H[efecto[i]-1]-hx[io[efecto[i]][sale]];
- M[efecto[i]-1][io[efecto[i]-1][entra]]=hvap[efecto[i]-1];
- M[efecto[i]-1][io[efecto[i]-1][sale]]=-hvap[efecto[i]-1];
- N[efecto[i]-1][0]=L[io[efecto[i]][entra]]*(H[efecto[i]-1]-hx[io[efecto[i]][entra]]);
- }/*Caso 4:*/if(efecto[i]!=1 and io[efecto[i]][sale]!=io[efecto[i]-1][entra] and io[efecto[i]-1][sale]==io[efecto[size-1]][sale]) {
- if(aver==0) {
- cout<<"CASO 4"<<endl<<endl;
- }
- M[efecto[i]-1][io[efecto[i]-1][entra]]=hvap[efecto[i]-1];
- M[efecto[i]-1][io[efecto[i]][sale]]=H[efecto[i]-1]-hx[io[efecto[i]][sale]];
- N[efecto[i]-1][0]=L[io[efecto[i]][entra]]*(H[efecto[i]-1]-hx[io[efecto[i]][entra]])+L[io[efecto[i]-1][sale]]*hvap[efecto[i]-1];
- }/*Caso 5:*/if(size==2 and efecto[0]==2) {
- if(aver==0) {
- cout<<"CASO 5"<<endl<<endl;
- }
- M[efecto[i]-1][1]=hvap[1]-hx[io[efecto[i]][sale]]+H[1];
- N[efecto[i]-1][0]=L[io[efecto[i]][entra]]*(H[1]-hx[io[efecto[i]][entra]])+L[1]*hvap[1];
- }
- } else if(i==size-1) {
- /*Producto*/if(aver==size-1) {
- cout<<"PRODUCTO"<<endl;
- cout<<"Se llena la fila M["<<efecto[i]<<"]"<<endl;
- }
- /*Caso 1: */ if(efecto[i]==1 and size==2) {
- if(aver==size-1) {
- cout<<"CASO 1"<<endl<<endl;
- }
- M[efecto[i]-1][0]=hvap[efecto[i]-1];
- M[efecto[i]-1][1]=hx[io[efecto[i]][entra]]-H[efecto[i]-1];
- N[efecto[i]-1][0]=L[io[efecto[i]][sale]]*(hx[io[efecto[i]][sale]]-H[efecto[i]-1]);
- }/*Caso 2: Ocurre con el efecto 1-2 producto en el 2*/if(io[efecto[i]-1][entra]==0 and io[efecto[i]-1][sale]==io[efecto[i]][entra]) {
- if(aver==size-1) {
- cout<<"CASO 2"<<endl<<endl;
- }
- M[efecto[i]-1][io[efecto[i]][entra]]=hx[io[efecto[i]][entra]]-H[efecto[i]-1]-hvap[efecto[i]-1];
- N[efecto[i]-1][0]=L[io[efecto[i]][sale]]*(hx[io[efecto[i]][sale]]-H[efecto[i]-1])-L[io[efecto[i]-1][entra]]*hvap[efecto[i]-1];
- }/*Caso 3: */if(io[efecto[i]-1][entra]==0 and io[efecto[i]-1][sale]!=io[efecto[i]][entra] and size>2 and efecto[i]>1) {
- if(aver==size-1) {
- cout<<"CASO 3"<<endl<<endl;
- }
- M[efecto[i]-1][io[efecto[i]][entra]]=hx[io[efecto[i]][entra]]-H[efecto[i]-1];
- M[efecto[i]-1][io[efecto[i]-1][sale]]=-hvap[efecto[i]-1];
- N[efecto[i]-1][0]=L[io[efecto[i]][sale]]*(hx[io[efecto[i]][sale]]-H[efecto[i]-1])-L[io[efecto[i]-1][entra]]*hvap[efecto[i]-1];
- }/*Caso 4: */if(io[efecto[i]-1][entra]!=0 and io[efecto[i]-1][sale]!=io[efecto[i]][entra]) {
- if(aver==size-1) {
- cout<<"CASO 4"<<endl<<endl;
- }
- M[efecto[i]-1][io[efecto[i]][entra]]=hx[io[efecto[i]][entra]]-H[efecto[i]-1];
- M[efecto[i]-1][io[efecto[i]-1][entra]]=hvap[efecto[i]-1];
- M[efecto[i]-1][io[efecto[i]-1][sale]]=-hvap[efecto[i]-1];
- N[efecto[i]-1][0]=L[efecto[size-1]]*(hx[io[efecto[i]][sale]]-H[efecto[i]-1]);
- }/*Caso 5: */if(size>2 and efecto[i]==1) {
- if(aver==size-1) {
- cout<<"CASO 5"<<endl<<endl;
- }
- M[efecto[i]-1][io[efecto[i]][entra]]=hx[io[efecto[i]][entra]]-H[efecto[i]-1];
- M[efecto[i]-1][0]=hvap[efecto[i]-1];
- N[efecto[i]-1][0]=L[io[efecto[i]][sale]]*(hx[io[efecto[i]][sale]]-H[efecto[i]-1]);
- }/*Caso 6: */if(size>2 and io[efecto[i]][entra]==io[efecto[i]-1][sale] and io[efecto[i]-1][entra]>0 and efecto[i]!=1) {
- if(aver==size-1) {
- cout<<"CASO 6"<<endl<<endl;
- }
- M[efecto[i]-1][io[efecto[i]][entra]]=hx[io[efecto[i]][entra]]-hvap[efecto[i]-1]-H[efecto[i]-1];
- M[efecto[i]-1][io[efecto[i]-1][entra]]=hvap[efecto[i]-1];
- N[efecto[i]-1][0]=L[io[efecto[i]][sale]]*(hx[io[efecto[i]][sale]]-H[efecto[i]-1]);
- }
- } else {
- if(aver>0 and aver<size-1) {
- cout<<"En medio:"<<endl;
- cout<<"Se llena la fila M["<<efecto[i]<<"]"<<endl;
- }
- /*Caso 1*/if(io[efecto[i]-1][entra]!=0 and io[efecto[i]-1][sale]!=io[efecto[i]][entra] and io[efecto[i]-1][sale]!=io[efecto[size-1]][sale] and io[efecto[i]-1][entra]!=io[efecto[i]][sale]) {
- if(aver>0 and aver<size-1) {
- cout<<"Caso 1"<<endl<<endl;
- }
- M[efecto[i]-1][io[efecto[i]][entra]]=hx[io[efecto[i]][entra]]-H[efecto[i]-1];
- M[efecto[i]-1][io[efecto[i]][sale]]=H[efecto[i]-1]-hx[io[efecto[i]][sale]];
- M[efecto[i]-1][io[efecto[i]-1][entra]]=hvap[efecto[i]-1];
- M[efecto[i]-1][io[efecto[i]-1][sale]]=-hvap[efecto[i]-1];
- N[efecto[i]-1][0]=0;
- }/*Caso 2*/if(io[efecto[i]-1][entra]==0 and io[efecto[i]][entra]!=io[efecto[i]-1][sale] and efecto[i]!=1) {
- if(aver>0 and aver<size-1) {
- cout<<"Caso 2"<<endl<<endl;
- }
- M[efecto[i]-1][io[efecto[i]][entra]]=hx[io[efecto[i]][entra]]-H[efecto[i]-1];
- M[efecto[i]-1][io[efecto[i]-1][sale]]=-hvap[efecto[i]-1];
- M[efecto[i]-1][io[efecto[i]][sale]]=H[efecto[i]-1]-hx[io[efecto[i]][sale]];
- N[efecto[i]-1][0]=-L[0]*hvap[efecto[i]-1];
- }/*Caso 3*/if(io[efecto[i]-1][entra]==0 and io[efecto[i]][entra]==io[efecto[i]-1][sale]) {
- if(aver>0 and aver<size-1) {
- cout<<"Caso 3"<<endl<<endl;
- }
- M[efecto[i]-1][io[efecto[i]][entra]]=hx[io[efecto[i]][entra]]-H[efecto[i]-1]-hvap[efecto[i]-1];
- M[efecto[i]-1][io[efecto[i]][sale]]=H[efecto[i]-1]-hx[io[efecto[i]][sale]];
- N[efecto[i]-1][0]=-L[io[efecto[i]-1][entra]]*hvap[efecto[i]-1];
- }/*Caso 4*/if(io[efecto[i]][sale]==io[efecto[i]-1][entra] and io[efecto[i]-1][sale]!=io[efecto[size-1]][sale]) {
- if(aver>0 and aver<size-1) {
- cout<<"Caso 4"<<endl<<endl;
- }
- M[efecto[i]-1][io[efecto[i]][entra]]=hx[io[efecto[i]][entra]]-H[efecto[i]-1];
- M[efecto[i]-1][io[efecto[i]][sale]]=hvap[efecto[i]-1]+H[efecto[i]-1]-hx[io[efecto[i]][sale]];
- M[efecto[i]-1][io[efecto[i]-1][sale]]=-hvap[efecto[i]-1];
- N[efecto[i]-1][0]=0;
- }/*Caso 5*/if(io[efecto[i]][entra]==io[efecto[i]-1][sale] and io[efecto[i]-1][entra]!=0) {
- if(aver>0 and aver<size-1) {
- cout<<"Caso 5"<<endl<<endl;
- }
- M[efecto[i]-1][io[efecto[i]][entra]]=hx[io[efecto[i]][entra]]-hvap[efecto[i]-1]-H[efecto[i]-1];
- M[efecto[i]-1][io[efecto[i]][sale]]=H[efecto[i]-1]-hx[io[efecto[i]][sale]];
- M[efecto[i]-1][io[efecto[i]-1][entra]]=hvap[efecto[i]-1];
- N[efecto[i]-1][0]=0;
- }/*Caso 6*/if(io[efecto[i]-1][sale]==io[efecto[size-1]][sale] and io[efecto[i]][sale]!=io[efecto[i]-1][entra]) {
- if(aver>0 and aver<size-1) {
- cout<<"Caso 6"<<endl<<endl;
- }
- M[efecto[i]-1][io[efecto[i]][entra]]=hx[io[efecto[i]][entra]]-H[efecto[i]-1];
- M[efecto[i]-1][io[efecto[i]][sale]]=H[efecto[i]-1]-hx[io[efecto[i]][sale]];
- M[efecto[i]-1][io[efecto[i]-1][entra]]=hvap[efecto[i]-1];
- N[efecto[i]-1][0]=L[io[efecto[size-1]][sale]]*hvap[efecto[i]-1];
- }/*Caso 7*/if(io[efecto[i]][sale]==io[efecto[i]-1][entra] and io[efecto[i]-1][sale]==io[efecto[size-1]][sale]) {
- if(aver>0 and aver<size-1) {
- cout<<"Caso 7"<<endl<<endl;
- }
- M[efecto[i]-1][io[efecto[i]][entra]]=hx[io[efecto[i]][entra]]-H[efecto[i]-1];
- M[efecto[i]-1][io[efecto[i]][sale]]=hvap[efecto[i]-1]+H[efecto[i]-1]-hx[io[efecto[i]][sale]];
- N[efecto[i]-1][0]=L[io[efecto[i]-1][sale]]*hvap[efecto[i]-1];
- }
- /*Caso 8*/if(io[efecto[i]-1][entra]==0 and efecto[i]==1 and size>2) {
- if(aver>0 and aver<size-1) {
- cout<<"Caso 8"<<endl<<endl;
- }
- M[efecto[i]-1][1]=H[0]-hx[1];
- M[efecto[i]-1][0]=hvap[efecto[i]-1];
- M[efecto[i]-1][io[efecto[i]][entra]]=hx[io[efecto[i]][entra]]-H[0];
- N[efecto[i]-1][0]=0;
- }
- }
- }
- if(efecto[size-1]!=size and size>2) {
- for(int columna=efecto[size-1]; columna<=size; columna++) {
- for(int fila=0; fila<size; fila++) {
- M[fila][columna]=M[fila][columna+1];
- }
- }
- }
- /*cout<<"Matriz M:"<<endl;
- for(int i=0;i<size;i++) {
- for(int j=0;j<size;j++) {
- cout<<setw(14)<<setprecision(10)<<M[i][j]<<" ";
- }
- cout<<endl;
- }
- cout<<"N:"<<endl;
- for(int i=0;i<size;i++) {
- cout<<setw(14)<<setprecision(10)<<N[i][0]<<endl;
- }
- cout<<"V[0]="<<V[0]<<endl;
- cout<<"Iteracion: "<<iteracion<<endl;*/
- for(int k=0; k<size; k++) {
- for(int i=0; i<size; i++) {
- for(int j=0; j<size; j++) {
- m[i][j]=M[i][j];
- }
- }
- for(int i=0; i<=9; i++) {
- m[i][k]=N[i][0];
- }
- if(k==0) {
- V[0]=determinante(m,size)/determinante(M,size);
- } else {
- L[incognita[k-1]]=determinante(m,size)/determinante(M,size);
- }
- }
- for(int i=0; i<=size; i++) {
- if(abs(L[i]-Licor[i])>1) {
- contador++;
- }
- }
- for(int i=0; i<size; i++) {
- V[efecto[i]]=L[io[efecto[i]][entra]]-L[io[efecto[i]][sale]];
- }
- } while(contador>0);
- contador=0;
- for(int i=1; i<=size; i++) {
- A[i]=V[i-1]*hvap[i-1]/(U[i-1]*deltaT[i]);
- Q[i-1]=A[i]*U[i-1]*deltaT[i];
- }
- suma=0;
- for(int i=1; i<=size; i++) {
- suma=suma+A[i]/size;
- }
- A[0]=suma;
- for(int i=1; i<=size; i++) {
- deltaT[i]=deltaT[i]*A[i]/A[0];
- }
- deltaT[0]=0;
- for(int i=1; i<=size; i++) {
- deltaT[0]=deltaT[0]+deltaT[i];
- }
- deltaT0=0;
- for(int i=0; i<size; i++) {
- deltaT0=deltaT0+epe[i];
- }
- deltaT0=Tsat[0]-Tsat[size]-deltaT0;
- if(abs(deltaT0-deltaT[0])>0.001) {
- deltaT[0]=(deltaT0+deltaT[0])/2;
- }
- iteracion++;
- if(iteracion==3) {
- resolver2();
- }
- cout<<"Iteracion: "<<iteracion<<endl;
- } while(iteracion<=5);
- deltaT[0]=(deltaT0+deltaT[0])/2;
- suma=0;
- for(int i=1; i<size; i++) {
- P[i]=P_sat(Tsat[i]);
- }
- economia=0;
- for(int i=1; i<=size; i++) {
- economia=economia+V[i]/V[0];
- }
- contador=0;
- for(int i=0; i<=size; i++) {
- if(A[i]<=0) {
- contador++;
- }
- if(L[i]<=0) {
- contador++;
- }
- if(epe[i]<=0 and i!=size) {
- contador++;
- }
- if(Tsat[i]<=Tsat[i+1] and i!=size) {
- contador++;
- }
- if(deltaT[i+1]>=deltaT[0] and i!=size) {
- contador++;
- }
- if(x[i]<=0 and i!=size) {
- contador++;
- }
- if(deltaT[i]<=0) {
- contador++;
- }
- if(V[i]<=0) {
- contador++;
- }
- }
- if(contador==0) {
- return true;
- } else {
- return false;
- }
- }
- /*
- void resolver2(void){
- En esta parte tiene que ir ceres
- }*/
- double EPE(double x,double T) {
- return (1+0.1419526*x)*T+271.3627*pow(x,2)-9.419608*x-T;
- }
- bool orden_efectos(int n) {
- vector<int> digitos;
- int temp=n;
- while(temp>0) {
- digitos.push_back(temp%10);
- temp/=10;
- }
- if (digitos.size()!=size) {
- cout<<"Debe ingresar un valor v\240lido."<<endl;
- cout<<n<<" tiene "<<digitos.size()<<" cifras. Ingrese un orden de "<<size<<" cifras.\n";
- return false;
- }
- reverse(digitos.begin(),digitos.end());
- vector<int> rango(size);
- iota(rango.begin(),rango.end(),1);
- sort(digitos.begin(),digitos.end());
- if(digitos!=rango) {
- cout<<"Orden inv\240lido,pruebe otra vez."<<endl;
- return false;
- }
- temp=n;
- for(int i=0; i<size; i++) {
- efecto[i]=temp%10;
- temp/=10;
- }
- reverse(efecto,efecto+size);
- for(int i=0; i<size-1; i++) {
- incognita[i]=efecto[i];
- }
- sort(incognita,incognita+size-1);
- return true;
- }
- void borrar(void) {
- label=0;
- unsigned short int i,j;
- for(i=0; i<=9; i++) {
- for(j=0; j<=9; j++) {
- m[i][j]=0;
- }
- }
- for(i=0; i<=9; i++) {
- H[i]=0;
- }
- for(i=0; i<9; i++) {
- A[i]=0;
- }
- for(i=0; i<9; i++) {
- U[i]=0;
- }
- for(i=0; i<=9; i++) {
- L[i]=0;
- }
- for(i=0; i<=9; i++) {
- T[i]=0;
- }
- for(i=0; i<=9; i++) {
- P[i]=0;
- }
- for(i=0; i<=9; i++) {
- x[i]=0;
- }
- for(i=0; i<=9; i++) {
- hx[i]=0;
- }
- for(i=0; i<=9; i++) {
- Tsat[i]=0;
- }
- for(i=0; i<9; i++) {
- for(j=0; j<=2; j++) {
- io[i][j]=0;
- }
- }
- for(i=0; i<=8; i++) {
- for(j=0; j<=2; j++) {
- N[i][j]=0;
- }
- }
- for(i=0; i<=9; i++) {
- deltaT[i]=0;
- }
- for(i=0; i<=9; i++) {
- V[i]=0;
- }
- for(i=0; i<=9; i++) {
- epe[i]=0;
- }
- for(i=0; i<=9; i++) {
- Licor[i]=0;
- }
- for(i=0; i<9; i++) {
- hvap[i]=0;
- }
- }
- /*double Hx(double x,double T) {
- if (x<=0||x>=0.75||T>400||T<40) {
- throw std::logic_error("x o T fuera de rango.");
- }
- unsigned short int Tx=static_cast<unsigned short int>(T/10-4);
- double h[36];
- h[0]=8.219430803614e+00+1.230933268065e+02*x-8.584212214443e+03*pow(x,2)+3.509231300664e+05*pow(x,3)-7.706026103393e+06*pow(x,4)+8.407353880554e+07*pow(x,5)-3.572446063967e+08*pow(x,6)-6.454608354850e+08*pow(x,7)+6.148788650843e+09*pow(x,8)+3.642132509238e+10*pow(x,9)-2.472875309956e+11*pow(x,10)-1.978309275261e+11*pow(x,11)+2.375921834948e+12*pow(x,12)-2.714063764541e+12*pow(x,13)+1.992816135748e+13*pow(x,14)+2.352294196277e+13*pow(x,15)-3.177362396359e+14*pow(x,16)-6.418034554324e+14*pow(x,17)-1.168147202489e+15*pow(x,18)+6.569617558021e+15*pow(x,19)+2.356174017836e+16*pow(x,20)+1.043865859153e+17*pow(x,21)+2.224477326099e+17*pow(x,22)-8.662127007082e+17*pow(x,23)-4.452470089319e+18*pow(x,24)-9.499655204396e+18*pow(x,25)-3.367693118408e+19*pow(x,26)+4.098424874077e+19*pow(x,27)+6.801696348343e+20*pow(x,28)+5.607625307059e+20*pow(x,29)+4.170697087814e+21*pow(x,30)-4.791023148698e+21*pow(x,31)-4.359430547787e+22*pow(x,32)-1.561855622636e+22*pow(x,33)+9.084500737005e+21*pow(x,34)-3.717684399014e+23*pow(x,35)-3.178040911301e+24*pow(x,36)-3.949934484237e+24*pow(x,37)+2.819623013312e+25*pow(x,38)+9.878816138449e+25*pow(x,39)-2.888644503828e+25*pow(x,40)-5.114649377515e+26*pow(x,41)+9.689387326313e+27*pow(x,42)-3.093677092813e+28*pow(x,43)+4.226393186633e+28*pow(x,44)+1.438589121249e+29*pow(x,45)-1.181343711464e+30*pow(x,46)-2.130358166562e+30*pow(x,47)+8.383064406919e+30*pow(x,48)+3.086629166865e+31*pow(x,49)-7.055151210246e+31*pow(x,50)+0.0*pow(x,51);
- h[1]=1.855819364335e+01+1.868778161598e+02*x-1.903934915943e+04*pow(x,2)+7.116221598773e+05*pow(x,3)-1.221448983636e+07*pow(x,4)+6.869084801289e+07*pow(x,5)+7.435427052853e+08*pow(x,6)-1.379659960161e+10*pow(x,7)+7.431856358622e+10*pow(x,8)-7.249066345989e+10*pow(x,9)-3.498424730798e+11*pow(x,10)-1.875745068247e+12*pow(x,11)+8.457990975292e+12*pow(x,12)+3.610109866601e+13*pow(x,13)-5.426432163947e+13*pow(x,14)-5.374445763290e+14*pow(x,15)+3.956656025525e+14*pow(x,16)-1.104118150867e+15*pow(x,17)+1.274414388851e+16*pow(x,18)+2.748115594435e+16*pow(x,19)-1.372942192981e+16*pow(x,20)-2.580132413446e+17*pow(x,21)-7.975537434013e+17*pow(x,22)-2.610940526815e+17*pow(x,23)+8.802431842887e+18*pow(x,24)-3.586621045401e+19*pow(x,25)+9.935447610938e+19*pow(x,26)-9.948814175213e+19*pow(x,27)+2.977884342078e+20*pow(x,28)+9.763507116198e+20*pow(x,29)-5.597039468527e+19*pow(x,30)+1.307113387675e+22*pow(x,31)+9.546233749623e+21*pow(x,32)-1.887884577664e+23*pow(x,33)-5.448571882139e+23*pow(x,34)-3.103406465341e+24*pow(x,35)+3.226702699745e+24*pow(x,36)+1.558518077781e+25*pow(x,37)+3.163873305816e+24*pow(x,38)+2.579688028382e+26*pow(x,39)+5.887612386592e+26*pow(x,40)-5.222290913388e+26*pow(x,41)-6.995359131443e+26*pow(x,42)-4.144433200953e+28*pow(x,43)-1.082814665035e+28*pow(x,44)+1.614867343410e+29*pow(x,45)+1.424828970090e+29*pow(x,46)+1.015477872738e+29*pow(x,47)+8.018246053544e+28*pow(x,48)-2.207798368839e+30*pow(x,49)+1.519274296710e+31*pow(x,50)-3.385303776655e+31*pow(x,51);
- h[2]=2.880341036081e+01-2.371672029599e+02*x+1.031290113344e+04*pow(x,2)-6.872662947513e+04*pow(x,3)-4.838825474669e+06*pow(x,4)+1.204083792847e+08*pow(x,5)-1.200593182935e+09*pow(x,6)+5.672671952987e+09*pow(x,7)-8.102112362547e+09*pow(x,8)-3.686126777779e+10*pow(x,9)+1.926033628735e+11*pow(x,10)-5.038163544815e+11*pow(x,11)+1.542711132985e+12*pow(x,12)-3.749768009933e+12*pow(x,13)+3.855590157209e+12*pow(x,14)-3.094039340763e+12*pow(x,15)+5.771106203691e+11*pow(x,16)+5.388173517450e+13*pow(x,17)-9.044839261928e+13*pow(x,18)+1.692478690176e+13*pow(x,19)-4.713314245799e+14*pow(x,20)+7.547139286189e+14*pow(x,21)+1.496671638282e+15*pow(x,22)-4.035352942884e+15*pow(x,23)+4.045295433772e+15*pow(x,24)+1.878465427188e+15*pow(x,25)-4.554906455877e+15*pow(x,26)+2.391607112837e+16*pow(x,27)-1.318376597062e+17*pow(x,28)+1.099059532546e+17*pow(x,29)-1.845085198187e+17*pow(x,30)-1.117730732335e+17*pow(x,31)+3.573777340265e+18*pow(x,32)-4.091883503258e+18*pow(x,33)+8.959165021555e+18*pow(x,34)-2.746956619998e+19*pow(x,35)-2.864846720950e+19*pow(x,36)-5.850720653901e+18*pow(x,37)+8.669472712782e+19*pow(x,38)+4.896267610395e+20*pow(x,39)+6.892924731386e+20*pow(x,40)-1.989150326877e+21*pow(x,41)-4.632777692993e+20*pow(x,42)-5.499172898609e+21*pow(x,43)-7.737583727582e+21*pow(x,44)+2.157981529440e+22*pow(x,45)+1.790710587322e+22*pow(x,46)+9.190221604146e+22*pow(x,47)-1.310324209802e+23*pow(x,48)+9.350085256449e+22*pow(x,49)-7.877304455206e+23*pow(x,50)+8.653211206891e+23*pow(x,51);
- h[3]=2.880341036081e+01-2.371672029599e+02*x+1.031290113344e+04*pow(x,2)-6.872662947513e+04*pow(x,3)-4.838825474669e+06*pow(x,4)+1.204083792847e+08*pow(x,5)-1.200593182935e+09*pow(x,6)+5.672671952987e+09*pow(x,7)-8.102112362547e+09*pow(x,8)-3.686126777779e+10*pow(x,9)+1.926033628735e+11*pow(x,10)-5.038163544815e+11*pow(x,11)+1.542711132985e+12*pow(x,12)-3.749768009933e+12*pow(x,13)+3.855590157209e+12*pow(x,14)-3.094039340763e+12*pow(x,15)+5.771106203691e+11*pow(x,16)+5.388173517450e+13*pow(x,17)-9.044839261928e+13*pow(x,18)+1.692478690176e+13*pow(x,19)-4.713314245799e+14*pow(x,20)+7.547139286189e+14*pow(x,21)+1.496671638282e+15*pow(x,22)-4.035352942884e+15*pow(x,23)+4.045295433772e+15*pow(x,24)+1.878465427188e+15*pow(x,25)-4.554906455877e+15*pow(x,26)+2.391607112837e+16*pow(x,27)-1.318376597062e+17*pow(x,28)+1.099059532546e+17*pow(x,29)-1.845085198187e+17*pow(x,30)-1.117730732335e+17*pow(x,31)+3.573777340265e+18*pow(x,32)-4.091883503258e+18*pow(x,33)+8.959165021555e+18*pow(x,34)-2.746956619998e+19*pow(x,35)-2.864846720950e+19*pow(x,36)-5.850720653901e+18*pow(x,37)+8.669472712782e+19*pow(x,38)+4.896267610395e+20*pow(x,39)+6.892924731386e+20*pow(x,40)-1.989150326877e+21*pow(x,41)-4.632777692993e+20*pow(x,42)-5.499172898609e+21*pow(x,43)-7.737583727582e+21*pow(x,44)+2.157981529440e+22*pow(x,45)+1.790710587322e+22*pow(x,46)+9.190221604146e+22*pow(x,47)-1.310324209802e+23*pow(x,48)+9.350085256449e+22*pow(x,49)-7.877304455206e+23*pow(x,50)+8.653211206891e+23*pow(x,51);
- h[4]=4.767117468761e+01-9.232759115644e+00*x-2.166306102434e+03*pow(x,2)+6.382223653133e+04*pow(x,3)-1.081806290893e+06*pow(x,4)+9.888043802556e+06*pow(x,5)-4.438146004838e+07*pow(x,6)+4.715707830629e+07*pow(x,7)+3.761491402571e+08*pow(x,8)-1.447156149735e+09*pow(x,9)+1.145497738837e+09*pow(x,10)+2.199726117829e+09*pow(x,11)-2.588283920500e+09*pow(x,12)-1.097938574954e+09*pow(x,13)-4.028705673399e+09*pow(x,14)-9.915527026724e+08*pow(x,15)+1.010324989553e+11*pow(x,16)-2.936487670431e+11*pow(x,17)+2.420818674812e+11*pow(x,18)+4.476670072705e+10*pow(x,19)-7.518431398075e+10*pow(x,20)-1.769013377148e+12*pow(x,21)+1.016662191298e+13*pow(x,22)-2.662945221385e+13*pow(x,23)+3.977894556069e+13*pow(x,24)+2.108661463305e+13*pow(x,25)-1.077851775156e+14*pow(x,26)-5.898936983297e+13*pow(x,27)+5.331002382833e+14*pow(x,28)-4.168943092127e+14*pow(x,29)-1.699941624299e+15*pow(x,30)-8.147774738592e+14*pow(x,31)-2.181773900568e+15*pow(x,32)+1.119977282911e+16*pow(x,33)+3.887850040101e+16*pow(x,34)+7.807274472244e+15*pow(x,35)-5.421541357496e+16*pow(x,36)-1.358703500652e+17*pow(x,37)-9.367886661939e+16*pow(x,38)+3.911600193355e+17*pow(x,39)-1.009965257530e+18*pow(x,40)-2.326456816080e+18*pow(x,41)+4.962578398200e+18*pow(x,42)+1.058536897016e+18*pow(x,43)+1.224578751028e+19*pow(x,44)+1.227668167749e+19*pow(x,45)-3.586126378823e+19*pow(x,46)-4.259942850919e+19*pow(x,47)-5.176272033062e+19*pow(x,48)+2.483775851857e+20*pow(x,49)-4.280008244299e+20*pow(x,50)+3.974193143632e+20*pow(x,51);
- h[5]=5.749786883954e+01+2.450160292509e+02*x-2.283242311403e+04*pow(x,2)+6.793710113473e+05*pow(x,3)-1.010007750797e+07*pow(x,4)+7.938349868347e+07*pow(x,5)-3.024396439603e+08*pow(x,6)+2.147279260187e+08*pow(x,7)+2.046016008798e+09*pow(x,8)-4.506426944766e+09*pow(x,9)-3.905366587438e+09*pow(x,10)+1.063176507983e+10*pow(x,11)+6.556275134216e+08*pow(x,12)+4.363764096562e+10*pow(x,13)+5.556745395391e+10*pow(x,14)-1.772784625714e+11*pow(x,15)-8.200461375392e+11*pow(x,16)-4.105422606030e+11*pow(x,17)+1.209280732188e+12*pow(x,18)+7.444819910333e+12*pow(x,19)+5.289288400299e+12*pow(x,20)+8.593467816502e+12*pow(x,21)-4.567254035279e+13*pow(x,22)-4.579607113840e+13*pow(x,23)-1.148808506811e+14*pow(x,24)-2.235593665098e+14*pow(x,25)-1.516261530203e+14*pow(x,26)+2.020092575654e+15*pow(x,27)+5.432332091203e+15*pow(x,28)-2.129324540417e+15*pow(x,29)-1.304419615701e+16*pow(x,30)-2.700062332804e+16*pow(x,31)+2.807820914157e+16*pow(x,32)+5.638556177657e+16*pow(x,33)+2.278006406449e+16*pow(x,34)+2.215777934288e+16*pow(x,35)-1.704774158683e+17*pow(x,36)-1.091225949615e+18*pow(x,37)-1.591415173678e+18*pow(x,38)+2.361982612926e+18*pow(x,39)+1.267169331534e+19*pow(x,40)+1.143873566740e+18*pow(x,41)+8.410586603366e+18*pow(x,42)-6.524602669974e+19*pow(x,43)+1.762893942242e+19*pow(x,44)-2.910173591257e+19*pow(x,45)+3.625143888941e+19*pow(x,46)-1.343646800729e+20*pow(x,47)-7.932632683418e+20*pow(x,48)+2.571362512960e+21*pow(x,49)+4.051143589185e+20*pow(x,50)-2.820224973285e+21*pow(x,51);
- h[6]=6.946067671036e+01-2.944898551770e+02*x+1.259060099831e+04*pow(x,2)-3.282775142765e+05*pow(x,3)+4.405946335301e+06*pow(x,4)-3.165637188199e+07*pow(x,5)+1.087349776773e+08*pow(x,6)-3.029135187954e+07*pow(x,7)-9.058830344821e+08*pow(x,8)+1.879437713159e+09*pow(x,9)+1.122796524972e+09*pow(x,10)-3.166073931741e+09*pow(x,11)-1.120727075922e+09*pow(x,12)-1.299019514666e+10*pow(x,13)-3.397254983238e+10*pow(x,14)+6.821679398394e+10*pow(x,15)+2.916942570804e+11*pow(x,16)+3.865080624101e+11*pow(x,17)-4.283117647381e+11*pow(x,18)-3.471169833550e+12*pow(x,19)-2.860663828102e+12*pow(x,20)-5.188069180330e+12*pow(x,21)+2.319718977973e+13*pow(x,22)+1.947056373651e+13*pow(x,23)+5.840981515717e+13*pow(x,24)+9.637816319432e+13*pow(x,25)+7.831853079070e+13*pow(x,26)-9.353168548350e+14*pow(x,27)-2.347371372920e+15*pow(x,28)+8.286717615091e+14*pow(x,29)+5.590333291894e+15*pow(x,30)+1.042475640313e+16*pow(x,31)-1.241390897679e+16*pow(x,32)-2.237551651460e+16*pow(x,33)+4.818459874605e+15*pow(x,34)+9.495656679262e+15*pow(x,35)+5.304436046901e+16*pow(x,36)+4.525850102623e+17*pow(x,37)+5.299166151009e+17*pow(x,38)-9.815602182627e+17*pow(x,39)-5.671895812026e+18*pow(x,40)-8.115281339366e+17*pow(x,41)-3.314081040288e+18*pow(x,42)+3.180704064105e+19*pow(x,43)-7.750613809783e+18*pow(x,44)+1.478604438597e+19*pow(x,45)-2.752390808635e+19*pow(x,46)+7.004739582214e+19*pow(x,47)+3.197507080053e+20*pow(x,48)-1.060346379024e+21*pow(x,49)-3.596297908082e+20*pow(x,50)+1.414648033611e+21*pow(x,51);
- h[7]=7.885080401005e+01-1.836322879679e+02*x+4.084908791850e+03*pow(x,2)-7.574450079949e+04*pow(x,3)+7.077018911440e+05*pow(x,4)-3.015123139341e+06*pow(x,5)+6.578878393524e+05*pow(x,6)+4.288666144620e+07*pow(x,7)-1.281120384664e+08*pow(x,8)-1.499478698966e+07*pow(x,9)+4.536083754226e+08*pow(x,10)+4.290779711894e+07*pow(x,11)-1.419609641970e+09*pow(x,12)+2.663875360476e+09*pow(x,13)-6.521170517274e+09*pow(x,14)-9.606778196110e+09*pow(x,15)+4.359661144063e+10*pow(x,16)+4.501699717794e+10*pow(x,17)-1.827404444513e+11*pow(x,18)+1.026473140927e+11*pow(x,19)+1.955132406324e+10*pow(x,20)-3.860316120773e+11*pow(x,21)+6.407457842908e+11*pow(x,22)+2.078327495918e+11*pow(x,23)-6.342943260448e+11*pow(x,24)-1.452980275158e+12*pow(x,25)+9.551416146011e+12*pow(x,26)-1.121253903792e+13*pow(x,27)-3.281282637488e+11*pow(x,28)-8.794844384733e+13*pow(x,29)+3.100262041928e+14*pow(x,30)-2.250336652475e+14*pow(x,31)-1.298031113193e+14*pow(x,32)-2.063540312771e+14*pow(x,33)+1.122332741865e+15*pow(x,34)-2.273058866277e+15*pow(x,35)+1.914056799731e+15*pow(x,36)+2.764562251518e+15*pow(x,37)+8.909700241342e+14*pow(x,38)-1.622065799826e+16*pow(x,39)-4.616752099765e+16*pow(x,40)+1.307561746962e+17*pow(x,41)-3.373325890312e+16*pow(x,42)+7.634989830516e+16*pow(x,43)+1.349886735312e+17*pow(x,44)-1.279850487260e+17*pow(x,45)-2.140995150328e+18*pow(x,46)+1.905721024527e+18*pow(x,47)-7.461022755724e+17*pow(x,48)+6.592040167692e+18*pow(x,49)-6.515292250602e+18*pow(x,50)+1.497072576049e+17*pow(x,51);
- h[8]=8.929732605310e+01-2.351919659419e+02*x+8.904244618484e+03*pow(x,2)-2.389865218817e+05*pow(x,3)+3.306008462786e+06*pow(x,4)-2.566053689384e+07*pow(x,5)+1.128590344875e+08*pow(x,6)-2.419085914209e+08*pow(x,7)-9.213122415355e+06*pow(x,8)+1.088335987732e+09*pow(x,9)-1.039081738569e+09*pow(x,10)-3.127362345335e+09*pow(x,11)+2.816040067845e+09*pow(x,12)+1.229012616858e+10*pow(x,13)-1.761146363233e+09*pow(x,14)-3.624197549625e+10*pow(x,15)-8.054966932789e+10*pow(x,16)+1.809612366707e+11*pow(x,17)+1.326513819518e+11*pow(x,18)-1.007318675599e+11*pow(x,19)+5.371784923251e+11*pow(x,20)-8.217669916015e+11*pow(x,21)-3.393528377607e+12*pow(x,22)-2.425230090675e+12*pow(x,23)+7.139164865050e+12*pow(x,24)+1.129196988166e+13*pow(x,25)+9.873816506896e+12*pow(x,26)+3.495671774387e+12*pow(x,27)+2.817013257025e+13*pow(x,28)-1.051620339193e+14*pow(x,29)-4.627191670992e+13*pow(x,30)-2.698211829878e+14*pow(x,31)-6.673139030004e+14*pow(x,32)+6.891096233744e+14*pow(x,33)+1.680391828223e+15*pow(x,34)+2.660841161135e+15*pow(x,35)+4.192399945128e+15*pow(x,36)-8.328843772529e+15*pow(x,37)-1.325044782452e+16*pow(x,38)-1.892118523332e+15*pow(x,39)+1.574060948672e+16*pow(x,40)+2.306511810349e+16*pow(x,41)+3.486870224923e+16*pow(x,42)-2.167501258981e+16*pow(x,43)-5.421914401306e+17*pow(x,44)-3.959703771158e+17*pow(x,45)+1.193796176628e+18*pow(x,46)+2.233591676398e+18*pow(x,47)+4.133335720845e+18*pow(x,48)-1.296339975452e+19*pow(x,49)-1.434297768229e+18*pow(x,50)+8.806742863644e+18*pow(x,51);
- h[9]=9.817505946505e+01-2.881178410427e+01*x-2.771721923826e+03*pow(x,2)+4.179977675313e+04*pow(x,3)-3.152697490220e+05*pow(x,4)+1.386410899562e+06*pow(x,5)-4.813863501809e+06*pow(x,6)+2.194026747971e+07*pow(x,7)-8.378897649229e+07*pow(x,8)+1.127686937252e+08*pow(x,9)+2.897983494321e+08*pow(x,10)-9.917282827975e+08*pow(x,11)+2.786811396591e+08*pow(x,12)+9.366451575648e+08*pow(x,13)+2.813515349373e+09*pow(x,14)-6.531163229799e+09*pow(x,15)-2.401248049193e+09*pow(x,16)+3.879549363725e+09*pow(x,17)+1.699033609515e+10*pow(x,18)+1.311943339168e+10*pow(x,19)-8.000467759117e+10*pow(x,20)+8.395164250604e+10*pow(x,21)+4.517537804373e+10*pow(x,22)-4.532213240291e+11*pow(x,23)-1.664736828397e+11*pow(x,24)+9.354733631676e+11*pow(x,25)+2.723226880429e+11*pow(x,26)+1.021835119487e+12*pow(x,27)-1.846127146629e+12*pow(x,28)+1.367153774668e+13*pow(x,29)-1.316671164794e+13*pow(x,30)-2.840065767075e+13*pow(x,31)+2.541940079729e+13*pow(x,32)-1.443504002409e+13*pow(x,33)-4.297120428988e+13*pow(x,34)+4.928320858719e+13*pow(x,35)-5.295542977304e+14*pow(x,36)+1.376435569933e+15*pow(x,37)-1.179084171785e+15*pow(x,38)-1.761972898667e+15*pow(x,39)+5.314219906491e+15*pow(x,40)+4.986640259205e+15*pow(x,41)-1.561672176878e+15*pow(x,42)+1.359298275088e+16*pow(x,43)-2.235941089761e+16*pow(x,44)-4.327764254514e+16*pow(x,45)-9.334197737047e+16*pow(x,46)-1.828279585899e+17*pow(x,47)+4.484474421627e+17*pow(x,48)+3.224956932203e+17*pow(x,49)+5.859298516470e+17*pow(x,50)-1.329499103898e+18*pow(x,51);
- h[10]=1.090840465735e+02-1.017784383621e+02*x-9.103389647162e+02*pow(x,2)+8.272959523762e+03*pow(x,3)+3.305438122979e+04*pow(x,4)-6.642285597432e+05*pow(x,5)+2.745038872170e+06*pow(x,6)-1.990270882595e+06*pow(x,7)-7.305779830784e+06*pow(x,8)-1.564500839238e+07*pow(x,9)+1.054388122436e+08*pow(x,10)-3.200180705989e+07*pow(x,11)-3.809964651520e+08*pow(x,12)+5.466166123634e+08*pow(x,13)+1.500617223508e+08*pow(x,14)-5.051350053459e+08*pow(x,15)-1.711053810670e+09*pow(x,16)-4.962120348660e+09*pow(x,17)+2.712335890117e+10*pow(x,18)-1.706579569560e+10*pow(x,19)-1.371004188708e+10*pow(x,20)+5.049748897550e+10*pow(x,21)-6.218989817068e+10*pow(x,22)-2.046460213250e+11*pow(x,23)+1.193639536718e+11*pow(x,24)-1.886351129175e+11*pow(x,25)-7.318791198658e+10*pow(x,26)+3.077713582659e+12*pow(x,27)+5.235486032316e+12*pow(x,28)-1.044505349870e+13*pow(x,29)-1.625111908919e+13*pow(x,30)+1.091397394094e+13*pow(x,31)-1.329462223025e+13*pow(x,32)+3.500804523050e+13*pow(x,33)+6.332760303640e+13*pow(x,34)+5.748472778043e+13*pow(x,35)-2.299271676017e+14*pow(x,36)+3.874967219654e+14*pow(x,37)-1.781656668353e+15*pow(x,38)+2.401091015473e+15*pow(x,39)-1.946856859878e+15*pow(x,40)+5.530836837347e+14*pow(x,41)+1.931796702016e+15*pow(x,42)+1.136620128602e+16*pow(x,43)-2.676677636988e+16*pow(x,44)+4.007213555491e+16*pow(x,45)+1.812113491244e+16*pow(x,46)-1.794231634110e+17*pow(x,47)-6.427424714132e+15*pow(x,48)+2.610694189115e+16*pow(x,49)+7.782576093881e+17*pow(x,50)-7.306016174178e+17*pow(x,51);
- h[11]=1.187172064014e+02-1.207508407118e+02*x+1.947105954664e+02*pow(x,2)-1.444933348142e+04*pow(x,3)+2.347201016951e+05*pow(x,4)-1.489632929183e+06*pow(x,5)+4.398365570346e+06*pow(x,6)-5.766805934611e+06*pow(x,7)+5.305684860954e+06*pow(x,8)-1.478292440685e+07*pow(x,9)+1.603159936045e+07*pow(x,10)-2.738220933277e+04*pow(x,11)+5.698198813847e+07*pow(x,12)-6.531756347109e+07*pow(x,13)+6.623410936324e+07*pow(x,14)-4.702271319953e+08*pow(x,15)+3.100735357455e+06*pow(x,16)+6.171721240393e+08*pow(x,17)+1.182497405161e+09*pow(x,18)-4.825291770580e+08*pow(x,19)-3.210217834323e+07*pow(x,20)-9.077168758948e+08*pow(x,21)-4.587554055584e+09*pow(x,22)-2.380150999152e+09*pow(x,23)+5.530316290775e+08*pow(x,24)+7.008083989862e+09*pow(x,25)+1.525920912981e+10*pow(x,26)+1.788802071785e+09*pow(x,27)+1.187470529119e+10*pow(x,28)-1.119005100380e+10*pow(x,29)-5.654879862831e+09*pow(x,30)-7.124005777355e+10*pow(x,31)-6.703903736846e+10*pow(x,32)+2.107329172900e+10*pow(x,33)+3.423040989913e+10*pow(x,34)-9.858026077533e+09*pow(x,35)+3.148012591123e+11*pow(x,36)+1.527207645230e+11*pow(x,37)+6.502950986380e+10*pow(x,38)-1.787822129045e+11*pow(x,39)-1.584273546821e+11*pow(x,40)-6.660849551553e+11*pow(x,41)-2.411653526117e+11*pow(x,42)-1.001422687609e+12*pow(x,43)+2.554051358680e+12*pow(x,44)-2.329527960531e+12*pow(x,45)+1.767944172401e+12*pow(x,46)+1.245071544182e+12*pow(x,47)+7.214969416301e+12*pow(x,48)-1.338121998855e+13*pow(x,49)+1.891674368260e+12*pow(x,50)+2.810419980978e+12*pow(x,51);
- h[12]=1.294915195315e+02-2.774176616032e+02*x+6.230472554993e+03*pow(x,2)-1.364938267980e+05*pow(x,3)+1.591489343312e+06*pow(x,4)-1.017199723551e+07*pow(x,5)+3.610260699347e+07*pow(x,6)-6.362024714415e+07*pow(x,7)+2.239125282649e+07*pow(x,8)+7.479465188120e+07*pow(x,9)-2.690334665124e+07*pow(x,10)-7.168707464559e+07*pow(x,11)-1.633637348760e+08*pow(x,12)+4.525376556307e+08*pow(x,13)-1.122559998546e+09*pow(x,14)+2.262309212266e+09*pow(x,15)-5.441562065686e+08*pow(x,16)-9.650220695010e+08*pow(x,17)-1.976730683740e+09*pow(x,18)-1.920846626573e+09*pow(x,19)+4.828602563263e+09*pow(x,20)+9.941341045118e+08*pow(x,21)+6.185807085941e+09*pow(x,22)-6.026421018807e+09*pow(x,23)+1.742152667868e+10*pow(x,24)-3.701839157912e+10*pow(x,25)-2.328347776217e+10*pow(x,26)+4.017653750004e+10*pow(x,27)+1.564385341704e+10*pow(x,28)+2.956381137109e+09*pow(x,29)-1.274439779494e+11*pow(x,30)+1.380819601354e+11*pow(x,31)+1.709785186162e+11*pow(x,32)+3.997397007824e+10*pow(x,33)-2.627605906528e+11*pow(x,34)-3.739892981047e+10*pow(x,35)-3.732349877257e+11*pow(x,36)-2.984461472300e+10*pow(x,37)-3.794767398278e+11*pow(x,38)+1.855628087996e+12*pow(x,39)+2.225759417076e+11*pow(x,40)-2.554210459335e+12*pow(x,41)+1.411342025604e+12*pow(x,42)+4.970324181082e+12*pow(x,43)-1.030712610418e+13*pow(x,44)+7.014007120148e+12*pow(x,45)-3.116283200506e+12*pow(x,46)+1.081448092264e+13*pow(x,47)-3.705989032512e+13*pow(x,48)+4.736313989476e+13*pow(x,49)-2.051301478946e+13*pow(x,50)+7.128311981960e+11*pow(x,51);
- h[13]=1.397078301266e+02-2.659179269459e+02*x+3.346677343796e+03*pow(x,2)-4.735091068907e+04*pow(x,3)+3.884756043887e+05*pow(x,4)-1.699650109130e+06*pow(x,5)+3.891001684527e+06*pow(x,6)-4.646162949936e+06*pow(x,7)+5.817400786313e+06*pow(x,8)-1.139611690545e+07*pow(x,9)+8.113651524541e+06*pow(x,10)-1.599375922722e+07*pow(x,11)+5.134894071791e+07*pow(x,12)+2.193262091870e+07*pow(x,13)-2.040890075003e+07*pow(x,14)-2.311108203658e+08*pow(x,15)-8.913136239834e+07*pow(x,16)+2.466047573286e+08*pow(x,17)+5.276567354811e+08*pow(x,18)-1.423794300350e+08*pow(x,19)+5.280111826795e+08*pow(x,20)-1.830219194723e+08*pow(x,21)-2.017984114811e+09*pow(x,22)-2.220229398052e+09*pow(x,23)+8.045136324157e+08*pow(x,24)+1.494772836068e+09*pow(x,25)+4.667605895747e+09*pow(x,26)+1.977593088484e+09*pow(x,27)+8.292892534088e+09*pow(x,28)-1.692600168337e+09*pow(x,29)-9.724551714442e+09*pow(x,30)-2.493017775702e+10*pow(x,31)-2.131238155176e+10*pow(x,32)+1.253708151206e+10*pow(x,33)+1.777509168124e+10*pow(x,34)-2.840126387238e+10*pow(x,35)+1.314111194668e+11*pow(x,36)+4.502589131101e+10*pow(x,37)+3.602603477896e+10*pow(x,38)-1.593732403702e+10*pow(x,39)-8.959640864438e+10*pow(x,40)-5.513705160170e+11*pow(x,41)+1.901965763616e+10*pow(x,42)-1.177496338261e+11*pow(x,43)+1.150598327925e+12*pow(x,44)-1.148162058447e+12*pow(x,45)+6.624096473352e+11*pow(x,46)+1.322280972648e+12*pow(x,47)+1.710084891922e+12*pow(x,48)-4.484047498125e+12*pow(x,49)-1.269927805181e+12*pow(x,50)+2.663678672338e+12*pow(x,51);
- h[14]=1.502247151819e+02-3.046390635453e+02*x+5.721025997981e+03*pow(x,2)-1.130542828935e+05*pow(x,3)+1.227064986909e+06*pow(x,4)-7.358049706687e+06*pow(x,5)+2.460855811407e+07*pow(x,6)-4.116921657445e+07*pow(x,7)+1.533433772973e+07*pow(x,8)+3.885899933049e+07*pow(x,9)-1.258133096416e+07*pow(x,10)-3.531342181813e+07*pow(x,11)-7.682316535284e+07*pow(x,12)+2.513968487892e+08*pow(x,13)-6.926177903593e+08*pow(x,14)+1.232100146992e+09*pow(x,15)-3.087285620194e+08*pow(x,16)-4.319986565803e+08*pow(x,17)-7.021773331041e+08*pow(x,18)-1.412781944923e+09*pow(x,19)+3.181607850795e+09*pow(x,20)+2.008411217048e+08*pow(x,21)+1.887522982168e+09*pow(x,22)-4.868332243425e+09*pow(x,23)+1.107426204020e+10*pow(x,24)-2.023972404292e+10*pow(x,25)-8.765329068998e+09*pow(x,26)+2.739238592166e+10*pow(x,27)+1.414735447255e+10*pow(x,28)-6.285221663486e+09*pow(x,29)-7.771782680780e+10*pow(x,30)+6.130533145626e+10*pow(x,31)+8.052503117185e+10*pow(x,32)+2.353784084611e+10*pow(x,33)-1.626604287000e+11*pow(x,34)-2.689939899902e+10*pow(x,35)-9.097739032535e+10*pow(x,36)+4.881986551309e+10*pow(x,37)-1.566593182488e+11*pow(x,38)+1.037481567200e+12*pow(x,39)+5.354261170688e+10*pow(x,40)-1.872074059526e+12*pow(x,41)+9.471284701206e+11*pow(x,42)+2.582475044870e+12*pow(x,43)-5.561165725006e+12*pow(x,44)+3.348675468893e+12*pow(x,45)-1.062265810354e+12*pow(x,46)+6.663824649175e+12*pow(x,47)-1.940921667130e+13*pow(x,48)+2.445911698248e+13*pow(x,49)-1.158093902496e+13*pow(x,50)+5.728984649950e+11*pow(x,51);
- h[15]=1.605101712411e+02-2.749966759456e+02*x+4.548498160194e+03*pow(x,2)-9.996249913743e+04*pow(x,3)+1.165186932749e+06*pow(x,4)-7.249996316664e+06*pow(x,5)+2.456882214843e+07*pow(x,6)-4.042014773282e+07*pow(x,7)+1.129987284367e+07*pow(x,8)+4.587877622426e+07*pow(x,9)-2.314291802380e+07*pow(x,10)-5.034161832643e+06*pow(x,11)-1.069014385806e+08*pow(x,12)+2.274671346035e+08*pow(x,13)-7.197505234851e+08*pow(x,14)+1.350633954194e+09*pow(x,15)-2.575973976943e+08*pow(x,16)-5.465211991823e+08*pow(x,17)-6.711968447436e+08*pow(x,18)-1.562279518123e+09*pow(x,19)+3.317113964281e+09*pow(x,20)-1.572265830804e+08*pow(x,21)+1.909222020300e+09*pow(x,22)-4.195880983023e+09*pow(x,23)+1.102109226643e+10*pow(x,24)-2.054673157604e+10*pow(x,25)-8.099812734690e+09*pow(x,26)+2.977591650210e+10*pow(x,27)+9.445325756398e+09*pow(x,28)-1.246558817801e+10*pow(x,29)-6.806245769881e+10*pow(x,30)+6.468439038906e+10*pow(x,31)+9.161635810867e+10*pow(x,32)+1.493920407559e+10*pow(x,33)-2.064535366036e+11*pow(x,34)-6.917425503312e+09*pow(x,35)-8.813497362693e+10*pow(x,36)+5.014000616520e+10*pow(x,37)-1.190370254172e+11*pow(x,38)+9.692741287000e+11*pow(x,39)+6.153454980857e+10*pow(x,40)-1.671240684551e+12*pow(x,41)+1.135745537505e+12*pow(x,42)+2.385873128712e+12*pow(x,43)-6.073443327452e+12*pow(x,44)+3.767086081563e+12*pow(x,45)-1.345792202861e+12*pow(x,46)+5.755949072437e+12*pow(x,47)-1.900464534104e+13*pow(x,48)+2.522293310251e+13*pow(x,49)-9.016854169056e+12*pow(x,50)-2.107844239399e+12*pow(x,51);
- h[16]=1.694450503872e+02-3.050161587240e+02*x+5.199808304362e+03*pow(x,2)-1.045075283453e+05*pow(x,3)+1.179111103418e+06*pow(x,4)-7.378998283974e+06*pow(x,5)+2.585664975907e+07*pow(x,6)-4.574629134692e+07*pow(x,7)+1.976450820767e+07*pow(x,8)+4.240514310704e+07*pow(x,9)-5.868627874322e+06*pow(x,10)-7.025648633004e+07*pow(x,11)-8.123760257641e+07*pow(x,12)+3.123221661911e+08*pow(x,13)-7.403397967634e+08*pow(x,14)+1.367094885557e+09*pow(x,15)-4.026307552753e+08*pow(x,16)-4.199722554531e+08*pow(x,17)-1.112312753934e+09*pow(x,18)-1.311449593668e+09*pow(x,19)+3.172450618415e+09*pow(x,20)+6.621709668835e+08*pow(x,21)+3.169044244656e+09*pow(x,22)-5.363188415772e+09*pow(x,23)+1.211350888689e+10*pow(x,24)-2.351155344170e+10*pow(x,25)-1.236130462621e+10*pow(x,26)+2.712024248100e+10*pow(x,27)+1.702329423308e+10*pow(x,28)+3.440446218758e+09*pow(x,29)-9.491333193595e+10*pow(x,30)+7.620772342914e+10*pow(x,31)+8.914917784313e+10*pow(x,32)+3.536904174758e+10*pow(x,33)-1.458725626640e+11*pow(x,34)-4.405185765195e+10*pow(x,35)-1.834215973919e+11*pow(x,36)+2.553391515294e+10*pow(x,37)-2.552331197637e+11*pow(x,38)+1.287150560036e+12*pow(x,39)+1.171186686439e+11*pow(x,40)-2.053324674169e+12*pow(x,41)+8.303120379013e+11*pow(x,42)+3.248735029607e+12*pow(x,43)-6.177192423261e+12*pow(x,44)+3.915325321889e+12*pow(x,45)-1.531905802923e+12*pow(x,46)+8.356357065441e+12*pow(x,47)-2.404008026363e+13*pow(x,48)+2.921396973459e+13*pow(x,49)-1.568935338473e+13*pow(x,50)+3.046039251161e+12*pow(x,51);
- h[17]=1.795845962777e+02-2.273907142582e+02*x+1.018964883290e+03*pow(x,2)-1.609332238935e+04*pow(x,3)+2.001811481128e+05*pow(x,4)-1.139377253448e+06*pow(x,5)+2.655606754959e+06*pow(x,6)+3.128178159273e+05*pow(x,7)-9.733715073233e+06*pow(x,8)+8.419381120524e+06*pow(x,9)-1.810345148390e+07*pow(x,10)+9.004334285117e+07*pow(x,11)-4.977275836594e+07*pow(x,12)-1.254902177989e+08*pow(x,13)-6.890218489302e+07*pow(x,14)+1.554875114938e+08*pow(x,15)+2.784119958996e+08*pow(x,16)-1.918177223745e+08*pow(x,17)+6.409015356322e+08*pow(x,18)-7.656696400719e+08*pow(x,19)+3.005569293221e+08*pow(x,20)-1.232054456218e+09*pow(x,21)-2.133993040067e+09*pow(x,22)+8.115083130044e+08*pow(x,23)+6.931302331861e+08*pow(x,24)+2.815535902931e+09*pow(x,25)+7.575162327327e+09*pow(x,26)+9.868831582054e+09*pow(x,27)-5.001741695325e+09*pow(x,28)-3.090695824203e+10*pow(x,29)+2.397657093211e+10*pow(x,30)-1.625791053406e+10*pow(x,31)-1.222628332314e+10*pow(x,32)-3.556030818978e+10*pow(x,33)-9.857669959635e+10*pow(x,34)+5.814978548536e+10*pow(x,35)+1.874529383940e+11*pow(x,36)+1.238361820672e+11*pow(x,37)+2.145073164469e+11*pow(x,38)-3.032144115109e+11*pow(x,39)-9.674855747439e+10*pow(x,40)+1.058019205025e+11*pow(x,41)+5.573583899641e+11*pow(x,42)-1.204259120624e+12*pow(x,43)-7.630525388259e+11*pow(x,44)-1.985502304112e+11*pow(x,45)+1.167356755374e+12*pow(x,46)-3.178955900474e+12*pow(x,47)+6.538909443216e+12*pow(x,48)-3.414745226945e+12*pow(x,49)+7.714743397224e+12*pow(x,50)-7.801802748923e+12*pow(x,51);
- h[18]=1.890007073366e+02-2.905988370589e+02*x+5.269296639460e+03*pow(x,2)-1.102815497291e+05*pow(x,3)+1.208457268935e+06*pow(x,4)-7.168964791459e+06*pow(x,5)+2.339257431524e+07*pow(x,6)-3.736802212250e+07*pow(x,7)+1.131530168041e+07*pow(x,8)+3.626034233003e+07*pow(x,9)-1.858835234408e+07*pow(x,10)+7.561971162486e+05*pow(x,11)-7.523262116093e+07*pow(x,12)+1.796346414313e+08*pow(x,13)-6.285799242692e+08*pow(x,14)+1.051999561892e+09*pow(x,15)-2.152878561924e+08*pow(x,16)-3.232206399903e+08*pow(x,17)-1.527859095616e+08*pow(x,18)-1.597067837032e+09*pow(x,19)+3.060264090531e+09*pow(x,20)-4.825089753033e+08*pow(x,21)+3.022865002873e+07*pow(x,22)-4.559329347980e+09*pow(x,23)+1.014095992479e+10*pow(x,24)-1.597620271972e+10*pow(x,25)-2.389008427062e+09*pow(x,26)+2.789396217003e+10*pow(x,27)+1.224778767380e+10*pow(x,28)-1.678800631002e+10*pow(x,29)-6.091190095653e+10*pow(x,30)+3.458592567728e+10*pow(x,31)+6.166387844148e+10*pow(x,32)+1.878026470532e+10*pow(x,33)-1.790780566326e+11*pow(x,34)-1.030244398461e+10*pow(x,35)+3.226513936160e+10*pow(x,36)+9.143241469776e+10*pow(x,37)-6.228773851483e+10*pow(x,38)+7.824165543641e+11*pow(x,39)-6.662643074768e+09*pow(x,40)-1.718667713925e+12*pow(x,41)+1.018449358013e+12*pow(x,42)+1.767495057365e+12*pow(x,43)-4.602148548975e+12*pow(x,44)+2.558748186096e+12*pow(x,45)-5.930295086292e+11*pow(x,46)+5.154752942841e+12*pow(x,47)-1.410560172540e+13*pow(x,48)+1.801392628330e+13*pow(x,49)-6.971709212622e+12*pow(x,50)-1.419931854776e+12*pow(x,51);
- h[19]=1.990215400542e+02-1.730891943215e+02*x-7.942391589923e+02*pow(x,2)+6.108748802472e+03*pow(x,3)+6.401902632520e+04*pow(x,4)-8.914505820806e+05*pow(x,5)+4.132302572034e+06*pow(x,6)-8.064744874907e+06*pow(x,7)+2.890816114448e+06*pow(x,8)+7.463307678739e+06*pow(x,9)+4.603911731122e+06*pow(x,10)-1.098202544381e+07*pow(x,11)-2.747998955439e+07*pow(x,12)+3.714542855785e+07*pow(x,13)-1.354733755812e+08*pow(x,14)+3.063915482491e+08*pow(x,15)-6.790195857394e+06*pow(x,16)-9.755707159721e+07*pow(x,17)-3.395105105768e+08*pow(x,18)-2.004055627564e+08*pow(x,19)+2.447340804638e+08*pow(x,20)+1.713442618257e+08*pow(x,21)+9.943240993850e+08*pow(x,22)-7.016125038678e+08*pow(x,23)+2.163109807608e+09*pow(x,24)-4.263583107704e+09*pow(x,25)-2.311840795878e+09*pow(x,26)+5.385961841163e+09*pow(x,27)+2.770357075853e+09*pow(x,28)-1.104017978043e+09*pow(x,29)-1.657641835148e+10*pow(x,30)+1.960740459015e+10*pow(x,31)+7.241574512621e+09*pow(x,32)-4.699459786516e+09*pow(x,33)-2.225784872317e+10*pow(x,34)+1.604383702692e+09*pow(x,35)-4.467287787343e+10*pow(x,36)+3.751352115937e+10*pow(x,37)-3.841319233406e+10*pow(x,38)+2.520743910048e+11*pow(x,39)+2.258836411787e+10*pow(x,40)-3.235569922548e+11*pow(x,41)+1.458361612903e+11*pow(x,42)+4.494189160149e+11*pow(x,43)-1.488033015586e+12*pow(x,44)+7.806626771141e+11*pow(x,45)+7.967826264534e+10*pow(x,46)+1.224694621520e+12*pow(x,47)-4.251186317910e+12*pow(x,48)+6.583774437123e+12*pow(x,49)-3.354500873720e+12*pow(x,50)-1.384345619537e+11*pow(x,51);
- h[20]=2.089176579056e+02-2.309579321601e+02*x+4.324966461234e+02*pow(x,2)-4.134149060715e+03*pow(x,3)+7.568771547547e+04*pow(x,4)-5.480715762322e+05*pow(x,5)+2.026957490609e+06*pow(x,6)-3.894033081432e+06*pow(x,7)+3.292049291485e+06*pow(x,8)-6.611652703767e+05*pow(x,9)+5.538638803312e+06*pow(x,10)-1.896841254109e+07*pow(x,11)+8.196814138097e+06*pow(x,12)+3.627657442310e+07*pow(x,13)-5.985933923188e+07*pow(x,14)+7.133433790138e+07*pow(x,15)-4.409872426554e+07*pow(x,16)-6.791407861404e+06*pow(x,17)-1.325886644362e+08*pow(x,18)-1.148421718917e+07*pow(x,19)+1.950952601087e+08*pow(x,20)+2.670359226359e+08*pow(x,21)+3.465947413868e+08*pow(x,22)-8.480245109793e+08*pow(x,23)+1.195334728350e+09*pow(x,24)-2.110879593368e+09*pow(x,25)-1.748425161690e+09*pow(x,26)+1.587059843271e+09*pow(x,27)+3.623372623411e+09*pow(x,28)+2.297243433763e+09*pow(x,29)-1.224520524654e+10*pow(x,30)+8.257574811924e+09*pow(x,31)+1.467484582412e+09*pow(x,32)+3.454089598772e+09*pow(x,33)+9.571032468427e+09*pow(x,34)-1.285839697733e+10*pow(x,35)-2.258529261046e+10*pow(x,36)+9.100117587069e+09*pow(x,37)-3.326962596564e+10*pow(x,38)+1.444046009330e+11*pow(x,39)-8.650440643985e+09*pow(x,40)-2.764158252964e+11*pow(x,41)+4.138870273267e+10*pow(x,42)+3.323863817114e+11*pow(x,43)-3.762870184026e+11*pow(x,44)+1.331057895946e+11*pow(x,45)+1.351216256678e+11*pow(x,46)+9.135007947800e+11*pow(x,47)-2.217530845786e+12*pow(x,48)+2.771445139270e+12*pow(x,49)-2.844346651135e+12*pow(x,50)+1.301935204811e+12*pow(x,51);
- h[21]=2.198625825071e+02-2.585755135834e+02*x+1.825746823762e+03*pow(x,2)-3.800831520080e+04*pow(x,3)+4.711400551328e+05*pow(x,4)-3.020287309869e+06*pow(x,5)+1.017565940432e+07*pow(x,6)-1.511572661533e+07*pow(x,7)-1.918350990477e+06*pow(x,8)+2.758428481178e+07*pow(x,9)-2.093058409705e+07*pow(x,10)+4.194733863847e+07*pow(x,11)-7.902810522884e+07*pow(x,12)+1.878098895923e+07*pow(x,13)-3.034385816816e+08*pow(x,14)+6.789168951991e+08*pow(x,15)+6.677657837257e+07*pow(x,16)-3.734508300669e+08*pow(x,17)-9.091164221521e+07*pow(x,18)-1.054599442997e+09*pow(x,19)+1.238692034284e+09*pow(x,20)-5.290382031347e+08*pow(x,21)+1.846537295932e+08*pow(x,22)-3.655475267721e+08*pow(x,23)+4.818857388538e+09*pow(x,24)-7.054126478659e+09*pow(x,25)-9.513564995750e+08*pow(x,26)+1.524711565818e+10*pow(x,27)+1.005955062155e+08*pow(x,28)-1.951623841180e+10*pow(x,29)-1.664206311671e+10*pow(x,30)+2.081583717375e+10*pow(x,31)+3.669544746276e+10*pow(x,32)-8.143010240104e+09*pow(x,33)-1.242002972531e+11*pow(x,34)+3.611830032603e+10*pow(x,35)+2.393260028374e+10*pow(x,36)+6.654455244937e+10*pow(x,37)+1.694878304516e+10*pow(x,38)+2.631170747304e+11*pow(x,39)+5.697774522264e+09*pow(x,40)-5.034614351098e+11*pow(x,41)+6.004488825927e+11*pow(x,42)+4.923685551827e+11*pow(x,43)-3.063141399701e+12*pow(x,44)+1.753836061922e+12*pow(x,45)-1.493311650621e+10*pow(x,46)+4.590018142127e+11*pow(x,47)-4.737803870024e+12*pow(x,48)+8.898275489206e+12*pow(x,49)+6.164742101971e+11*pow(x,50)-5.113749185085e+12*pow(x,51);
- h[22]=2.291129459605e+02-2.335404953468e+02*x-9.745908132689e+02*pow(x,2)+2.753613780753e+04*pow(x,3)-2.594653697302e+05*pow(x,4)+1.391090273133e+06*pow(x,5)-3.973620907069e+06*pow(x,6)+3.764449373175e+06*pow(x,7)+8.216822602621e+06*pow(x,8)-2.326919287697e+07*pow(x,9)+2.991942565932e+07*pow(x,10)-6.973368258707e+07*pow(x,11)+7.727227613226e+07*pow(x,12)+3.391867868972e+07*pow(x,13)+1.736141288113e+08*pow(x,14)-4.883914038231e+08*pow(x,15)-1.404689400295e+08*pow(x,16)+4.405817423928e+08*pow(x,17)-1.894274711118e+07*pow(x,18)+7.320496425951e+08*pow(x,19)-8.347979638722e+08*pow(x,20)+6.922744728405e+08*pow(x,21)-1.418747846095e+08*pow(x,22)-1.206871700271e+09*pow(x,23)-2.054090764240e+09*pow(x,24)+3.491549016516e+09*pow(x,25)+9.592683738518e+08*pow(x,26)-1.023568370731e+10*pow(x,27)+7.613736776069e+09*pow(x,28)+2.013285031027e+10*pow(x,29)-9.750718536118e+09*pow(x,30)-1.787999231433e+10*pow(x,31)-3.898383034256e+10*pow(x,32)+1.997609498645e+10*pow(x,33)+1.217485179075e+11*pow(x,34)-4.840942851524e+10*pow(x,35)-1.181556063737e+10*pow(x,36)-1.496937414775e+10*pow(x,37)-8.568503738665e+10*pow(x,38)+2.665674065916e+10*pow(x,39)-3.670935313699e+09*pow(x,40)-1.149808956011e+11*pow(x,41)-6.057700435662e+11*pow(x,42)+5.951782980470e+10*pow(x,43)+2.235755826785e+12*pow(x,44)-1.455087751254e+12*pow(x,45)+3.238716108055e+11*pow(x,46)+1.895361896374e+12*pow(x,47)+7.445683746899e+11*pow(x,48)-5.056674672918e+12*pow(x,49)-4.804262746799e+12*pow(x,50)+7.130965030437e+12*pow(x,51);
- h[23]=2.389468061415e+02-2.398886072868e+02*x+1.065286366577e+03*pow(x,2)-2.978106507527e+04*pow(x,3)+3.920800493711e+05*pow(x,4)-2.370718729970e+06*pow(x,5)+7.262344574606e+06*pow(x,6)-1.031194069302e+07*pow(x,7)+3.485433985840e+06*pow(x,8)+3.927089756834e+06*pow(x,9)-6.123045190015e+06*pow(x,10)+1.978775129898e+07*pow(x,11)-1.590425211740e+07*pow(x,12)+4.423548506641e+07*pow(x,13)-1.746180919101e+08*pow(x,14)+1.585563660236e+08*pow(x,15)-1.080685862178e+08*pow(x,16)+5.109060045345e+07*pow(x,17)+3.149507576998e+08*pow(x,18)-3.781970185715e+08*pow(x,19)+1.202085512746e+09*pow(x,20)-7.453508405544e+08*pow(x,21)-1.127246722374e+09*pow(x,22)-2.305005143310e+09*pow(x,23)+1.796731413020e+09*pow(x,24)-2.763853514693e+09*pow(x,25)+4.185910391246e+09*pow(x,26)+9.993538397784e+09*pow(x,27)+1.820778721821e+09*pow(x,28)-7.466324463304e+09*pow(x,29)-4.946586383284e+09*pow(x,30)-3.489050292390e+09*pow(x,31)+8.282097700816e+09*pow(x,32)-1.235153440055e+09*pow(x,33)-8.419528312258e+10*pow(x,34)-8.804243802097e+09*pow(x,35)+8.726420202794e+10*pow(x,36)+4.524781271710e+10*pow(x,37)+7.398739170386e+10*pow(x,38)+7.322943653396e+10*pow(x,39)-3.300013625162e+10*pow(x,40)-4.466800092417e+11*pow(x,41)+4.930049849428e+11*pow(x,42)+5.655181558451e+09*pow(x,43)-6.027254323374e+11*pow(x,44)+1.340729393501e+11*pow(x,45)-4.475385650851e+11*pow(x,46)+1.579295671848e+12*pow(x,47)-2.196150445144e+12*pow(x,48)+2.227097517040e+12*pow(x,49)-1.556327366879e+11*pow(x,50)-7.601365547967e+11*pow(x,51);
- h[24]=2.502374458320e+02-2.665587263086e+02*x+9.052917055997e+02*pow(x,2)-1.815940981744e+04*pow(x,3)+2.304692628610e+05*pow(x,4)-1.466526928019e+06*pow(x,5)+5.311363086823e+06*pow(x,6)-1.047728126531e+07*pow(x,7)+7.681195504772e+06*pow(x,8)+5.547632931134e+06*pow(x,9)+2.264939715643e+06*pow(x,10)-3.497737650155e+07*pow(x,11)-1.144531033436e+07*pow(x,12)+1.304680598856e+08*pow(x,13)-1.862665964381e+08*pow(x,14)+3.050155483900e+08*pow(x,15)-2.163751605669e+08*pow(x,16)-7.924428966215e+07*pow(x,17)-5.056370548094e+08*pow(x,18)+8.471081258226e+07*pow(x,19)+9.373585748961e+08*pow(x,20)+3.633536003057e+08*pow(x,21)+1.704827246260e+09*pow(x,22)-2.032163575793e+09*pow(x,23)+2.128799925223e+09*pow(x,24)-7.272383731514e+09*pow(x,25)-5.553795816104e+09*pow(x,26)+5.367045731400e+09*pow(x,27)+2.954690628031e+09*pow(x,28)+1.084073673492e+10*pow(x,29)-2.276039368460e+10*pow(x,30)+3.242404917694e+10*pow(x,31)+3.106177236119e+10*pow(x,32)+8.517479838433e+09*pow(x,33)-3.394084296530e+10*pow(x,34)-3.440391476958e+10*pow(x,35)-1.196166211239e+11*pow(x,36)-4.306897298925e+10*pow(x,37)-7.347793451046e+10*pow(x,38)+3.716228911944e+11*pow(x,39)+6.541814750312e+10*pow(x,40)-4.269853673591e+11*pow(x,41)+2.704696483724e+11*pow(x,42)+1.058371568609e+12*pow(x,43)-1.442685965980e+12*pow(x,44)+1.082796670681e+12*pow(x,45)-1.212816381390e+12*pow(x,46)+2.916474916597e+12*pow(x,47)-8.499222761320e+12*pow(x,48)+9.864178216848e+12*pow(x,49)-6.130429553054e+12*pow(x,50)+2.503884887726e+12*pow(x,51);
- h[25]=2.608772141030e+02-3.243335910983e+02*x+2.903842744822e+03*pow(x,2)-6.749947550699e+04*pow(x,3)+8.772948595666e+05*pow(x,4)-6.009158478594e+06*pow(x,5)+2.266093200002e+07*pow(x,6)-4.305187182371e+07*pow(x,7)+2.043059915374e+07*pow(x,8)+4.518005122431e+07*pow(x,9)-6.454221367090e+06*pow(x,10)-9.763715512186e+07*pow(x,11)-8.114682668619e+07*pow(x,12)+3.651363117799e+08*pow(x,13)-7.063280891559e+08*pow(x,14)+1.405083570259e+09*pow(x,15)-5.139074401638e+08*pow(x,16)-4.878823491393e+08*pow(x,17)-1.625106504581e+09*pow(x,18)-8.837244114902e+08*pow(x,19)+2.977445836507e+09*pow(x,20)+1.288197484997e+09*pow(x,21)+5.094965251777e+09*pow(x,22)-4.534593526973e+09*pow(x,23)+1.135353875452e+10*pow(x,24)-2.593619779297e+10*pow(x,25)-1.863877722911e+10*pow(x,26)+2.129234008688e+10*pow(x,27)+1.371746205295e+10*pow(x,28)+1.862458424464e+10*pow(x,29)-9.928850793786e+10*pow(x,30)+9.674822879549e+10*pow(x,31)+1.164361604401e+11*pow(x,32)+4.903456908195e+10*pow(x,33)-1.169367388903e+11*pow(x,34)-5.605646059219e+10*pow(x,35)-3.404147025938e+11*pow(x,36)-7.563932851441e+10*pow(x,37)-3.813909625942e+11*pow(x,38)+1.408393804453e+12*pow(x,39)+1.947285600004e+11*pow(x,40)-1.786908314671e+12*pow(x,41)+5.990930369894e+11*pow(x,42)+3.921330360897e+12*pow(x,43)-6.317432442430e+12*pow(x,44)+4.698980638586e+12*pow(x,45)-2.632042663913e+12*pow(x,46)+9.072351331154e+12*pow(x,47)-2.810822254258e+13*pow(x,48)+3.287576490201e+13*pow(x,49)-1.789287882986e+13*pow(x,50)+4.988557440734e+12*pow(x,51);
- h[26]=2.701996250402e+02-3.551140375914e+02*x+4.056646645593e+03*pow(x,2)-8.009103282878e+04*pow(x,3)+8.786087221404e+05*pow(x,4)-5.343381373570e+06*pow(x,5)+1.859720823364e+07*pow(x,6)-3.370769996644e+07*pow(x,7)+1.679964014302e+07*pow(x,8)+3.032756583384e+07*pow(x,9)-4.790136698145e+06*pow(x,10)-7.006905641067e+07*pow(x,11)-4.647860505873e+07*pow(x,12)+2.720511711920e+08*pow(x,13)-5.412223590124e+08*pow(x,14)+9.702650760161e+08*pow(x,15)-3.942449083408e+08*pow(x,16)-2.815934170233e+08*pow(x,17)-9.274213290027e+08*pow(x,18)-7.954661787830e+08*pow(x,19)+2.488253146468e+09*pow(x,20)+7.205329883356e+08*pow(x,21)+2.747777588855e+09*pow(x,22)-4.276289073552e+09*pow(x,23)+8.817470652794e+09*pow(x,24)-1.840077816146e+10*pow(x,25)-1.120987380016e+10*pow(x,26)+1.801300660244e+10*pow(x,27)+1.307122910072e+10*pow(x,28)+1.027438159794e+10*pow(x,29)-7.460758543096e+10*pow(x,30)+6.034803555415e+10*pow(x,31)+7.666454814353e+10*pow(x,32)+3.820580451791e+10*pow(x,33)-9.419941372189e+10*pow(x,34)-5.077741435316e+10*pow(x,35)-1.841739278886e+11*pow(x,36)-3.088870122581e+10*pow(x,37)-2.362722416102e+11*pow(x,38)+1.011720039324e+12*pow(x,39)+1.093296191834e+11*pow(x,40)-1.533793881549e+12*pow(x,41)+5.496252200410e+11*pow(x,42)+2.752057715601e+12*pow(x,43)-4.320861096441e+12*pow(x,44)+3.004410735267e+12*pow(x,45)-1.699823103286e+12*pow(x,46)+6.916276885014e+12*pow(x,47)-1.959270076094e+13*pow(x,48)+2.243594059218e+13*pow(x,49)-1.304173048695e+13*pow(x,50)+4.059527247666e+12*pow(x,51);
- h[27]=2.814486457368e+02-3.577488289082e+02*x+3.034559343732e+03*pow(x,2)-4.736040513036e+04*pow(x,3)+4.150812996819e+05*pow(x,4)-1.851987779380e+06*pow(x,5)+3.986936049271e+06*pow(x,6)-2.473296671512e+06*pow(x,7)-1.829076330031e+06*pow(x,8)-3.831147329397e+06*pow(x,9)-3.938711942376e+06*pow(x,10)+4.306804447771e+07*pow(x,11)+9.141238902823e+06*pow(x,12)-7.590139873773e+07*pow(x,13)-3.492038712732e+07*pow(x,14)-1.095170206469e+08*pow(x,15)+1.382658671018e+08*pow(x,16)+9.363870966584e+07*pow(x,17)+8.382923239671e+08*pow(x,18)-6.108392626322e+08*pow(x,19)+4.019413784351e+08*pow(x,20)-9.038475667271e+08*pow(x,21)-3.046723075625e+09*pow(x,22)-1.008414696231e+09*pow(x,23)+9.565104704821e+08*pow(x,24)+3.758798748266e+09*pow(x,25)+8.847993634506e+09*pow(x,26)+7.036763433302e+09*pow(x,27)+3.888202720082e+09*pow(x,28)-2.144467134725e+10*pow(x,29)+8.202989342761e+09*pow(x,30)-3.321386983968e+10*pow(x,31)-3.114689258479e+10*pow(x,32)-1.257770955330e+10*pow(x,33)-3.774268183326e+10*pow(x,34)+1.660736486506e+10*pow(x,35)+2.293110111709e+11*pow(x,36)+1.205766906226e+11*pow(x,37)+1.650156471527e+11*pow(x,38)-2.203841239064e+11*pow(x,39)-1.336830913346e+11*pow(x,40)-3.440375080513e+11*pow(x,41)+3.085514609441e+11*pow(x,42)-9.383735679802e+11*pow(x,43)+5.487351994272e+11*pow(x,44)-1.143196247568e+12*pow(x,45)+1.455359602597e+12*pow(x,46)-1.240538715464e+12*pow(x,47)+6.302106075253e+12*pow(x,48)-6.546882671616e+12*pow(x,49)+4.047726907060e+12*pow(x,50)-2.796661952720e+12*pow(x,51);
- h[28]=2.926979540135e+02-3.605868223057e+02*x+2.624954977597e+03*pow(x,2)-5.190799706794e+04*pow(x,3)+5.983375058663e+05*pow(x,4)-3.845699550346e+06*pow(x,5)+1.469241093493e+07*pow(x,6)-3.133569355432e+07*pow(x,7)+2.631185577422e+07*pow(x,8)+1.097291342367e+07*pow(x,9)+2.766354632043e+07*pow(x,10)-1.634989688166e+08*pow(x,11)+3.357212130660e+07*pow(x,12)+3.302990732391e+08*pow(x,13)-3.945157316839e+08*pow(x,14)+6.023170806343e+08*pow(x,15)-5.284182573488e+08*pow(x,16)+4.950200199226e+07*pow(x,17)-1.275413162964e+09*pow(x,18)-8.044512563395e+07*pow(x,19)+1.507267754720e+09*pow(x,20)+2.015579592776e+09*pow(x,21)+3.644941261624e+09*pow(x,22)-5.092116511925e+09*pow(x,23)+8.000537210821e+09*pow(x,24)-1.724909097130e+10*pow(x,25)-1.501160494230e+10*pow(x,26)+6.409303408366e+09*pow(x,27)+2.329854336556e+10*pow(x,28)+3.434369327037e+10*pow(x,29)-9.884898833247e+10*pow(x,30)+5.680537030024e+10*pow(x,31)+4.803125560852e+10*pow(x,32)+6.604313353982e+10*pow(x,33)+6.002950741334e+10*pow(x,34)-1.026301519208e+11*pow(x,35)-2.719049733043e+11*pow(x,36)-6.538176349861e+10*pow(x,37)-4.115575826906e+11*pow(x,38)+1.208921633249e+12*pow(x,39)+1.205272074672e+11*pow(x,40)-1.787828599161e+12*pow(x,41)-1.982266013155e+11*pow(x,42)+3.359079328672e+12*pow(x,43)-2.686653368064e+12*pow(x,44)+2.053306848659e+12*pow(x,45)-1.172675615719e+12*pow(x,46)+9.115868314346e+12*pow(x,47)-2.127316573656e+13*pow(x,48)+2.076010802011e+13*pow(x,49)-2.049308489885e+13*pow(x,50)+1.212862102761e+13*pow(x,51);
- h[29]=3.018368921543e+02-2.344805985035e+02*x-1.523737344596e+03*pow(x,2)+9.715272854334e+03*pow(x,3)+1.015844996981e+05*pow(x,4)-1.492197123870e+06*pow(x,5)+8.114885242908e+06*pow(x,6)-2.153463785038e+07*pow(x,7)+2.127194065219e+07*pow(x,8)+9.992958556127e+06*pow(x,9)+2.037757596591e+07*pow(x,10)-1.473907183199e+08*pow(x,11)+1.204662368682e+07*pow(x,12)+3.325891431350e+08*pow(x,13)-2.912499560833e+08*pow(x,14)+5.413735825946e+08*pow(x,15)-5.882097134305e+08*pow(x,16)-4.112244372542e+07*pow(x,17)-1.632388221441e+09*pow(x,18)+6.025059619307e+08*pow(x,19)+1.196744820674e+09*pow(x,20)+2.004270506506e+09*pow(x,21)+5.373237607412e+09*pow(x,22)-3.465289302035e+09*pow(x,23)+4.400040696732e+09*pow(x,24)-1.673008660295e+10*pow(x,25)-1.816964536140e+10*pow(x,26)+1.860539862008e+08*pow(x,27)+1.079209739717e+10*pow(x,28)+4.544522267822e+10*pow(x,29)-7.307855556345e+10*pow(x,30)+7.488289954443e+10*pow(x,31)+7.318217158328e+10*pow(x,32)+5.469828170073e+10*pow(x,33)+4.192376469564e+10*pow(x,34)-9.550900479280e+10*pow(x,35)-4.016704688519e+11*pow(x,36)-1.730719796120e+11*pow(x,37)-4.096383851825e+11*pow(x,38)+1.040841739786e+12*pow(x,39)+2.101471315496e+11*pow(x,40)-9.408712520384e+11*pow(x,41)-2.261201129559e+11*pow(x,42)+3.247158794816e+12*pow(x,43)-2.460322626663e+12*pow(x,44)+2.611304956123e+12*pow(x,45)-2.812997435695e+12*pow(x,46)+8.237815662550e+12*pow(x,47)-2.213386581153e+13*pow(x,48)+2.184578779963e+13*pow(x,49)-1.814379051120e+13*pow(x,50)+1.102274867858e+13*pow(x,51);
- h[30]=3.115750947061e+02-3.809122144674e+02*x+2.733643926239e+03*pow(x,2)-4.283874229984e+04*pow(x,3)+3.787260130626e+05*pow(x,4)-1.677334534608e+06*pow(x,5)+3.746870136929e+06*pow(x,6)-3.622475397685e+06*pow(x,7)+2.222494070899e+06*pow(x,8)-6.600169736745e+06*pow(x,9)+1.112727626209e+06*pow(x,10)+1.435129874091e+07*pow(x,11)+1.964308300074e+07*pow(x,12)-1.288415382753e+07*pow(x,13)-3.690628821774e+07*pow(x,14)-1.283178807788e+08*pow(x,15)-7.288472240369e+06*pow(x,16)+1.527372714361e+08*pow(x,17)+5.667186556274e+08*pow(x,18)-2.698947224825e+08*pow(x,19)+5.348534126745e+08*pow(x,20)-5.841722521224e+08*pow(x,21)-2.058395554537e+09*pow(x,22)-1.637403895842e+09*pow(x,23)+4.477383731982e+08*pow(x,24)+1.910732139302e+09*pow(x,25)+6.034217336554e+09*pow(x,26)+4.755010376917e+09*pow(x,27)+4.128373083048e+09*pow(x,28)-8.985117795294e+09*pow(x,29)+1.946740644041e+09*pow(x,30)-2.242048579779e+10*pow(x,31)-1.990458376951e+10*pow(x,32)-3.289903889524e+09*pow(x,33)-2.465035425385e+10*pow(x,34)-7.403332016015e+09*pow(x,35)+1.507857290059e+11*pow(x,36)+6.467887743466e+10*pow(x,37)+1.055995548356e+11*pow(x,38)-1.053161369200e+11*pow(x,39)-8.176702691304e+10*pow(x,40)-3.501951115451e+11*pow(x,41)+2.143860369891e+11*pow(x,42)-4.665095787458e+11*pow(x,43)+6.374838741421e+11*pow(x,44)-9.076530814175e+11*pow(x,45)+5.939481745747e+11*pow(x,46)+3.010093953044e+11*pow(x,47)+2.857689616422e+12*pow(x,48)-4.054362289997e+12*pow(x,49)+1.182690082809e+12*pow(x,50)-1.497972944371e+11*pow(x,51);
- h[31]=3.216986042644e+02-4.221172665423e+02*x+5.052511502488e+03*pow(x,2)-1.161200285504e+05*pow(x,3)+1.429866358106e+06*pow(x,4)-9.441423501380e+06*pow(x,5)+3.484149288721e+07*pow(x,6)-6.531938438354e+07*pow(x,7)+2.916511619443e+07*pow(x,8)+7.322482187037e+07*pow(x,9)-1.233247636675e+07*pow(x,10)-1.460565969448e+08*pow(x,11)-1.342976045448e+08*pow(x,12)+5.413856904666e+08*pow(x,13)-1.106431863587e+09*pow(x,14)+2.294412227190e+09*pow(x,15)-6.740202789193e+08*pow(x,16)-9.484191789856e+08*pow(x,17)-2.657291355471e+09*pow(x,18)-1.539301720064e+09*pow(x,19)+4.421913773771e+09*pow(x,20)+2.240639275801e+09*pow(x,21)+8.339871474332e+09*pow(x,22)-6.189337448853e+09*pow(x,23)+1.830948153500e+10*pow(x,24)-4.054528669465e+10*pow(x,25)-3.145292200555e+10*pow(x,26)+3.398190264994e+10*pow(x,27)+2.177374274084e+10*pow(x,28)+2.312062590964e+10*pow(x,29)-1.553980129039e+11*pow(x,30)+1.595743552615e+11*pow(x,31)+1.804095380412e+11*pow(x,32)+6.467949685904e+10*pow(x,33)-1.762381987734e+11*pow(x,34)-7.410656747203e+10*pow(x,35)-5.436129069689e+11*pow(x,36)-9.782884240532e+10*pow(x,37)-5.710610395427e+11*pow(x,38)+2.198684684824e+12*pow(x,39)+3.022069948909e+11*pow(x,40)-2.768108033218e+12*pow(x,41)+9.743382542191e+11*pow(x,42)+6.098933985984e+12*pow(x,43)-1.052540963505e+13*pow(x,44)+7.480721711939e+12*pow(x,45)-3.431015605977e+12*pow(x,46)+1.285342722623e+13*pow(x,47)-4.272776614378e+13*pow(x,48)+5.246850776123e+13*pow(x,49)-2.755822026426e+13*pow(x,50)+6.034334976951e+12*pow(x,51);
- h[32]=3.324597374125e+02-4.436579646922e+02*x+5.160060195900e+03*pow(x,2)-1.038061863419e+05*pow(x,3)+1.136871925821e+06*pow(x,4)-6.732303311285e+06*pow(x,5)+2.260079991064e+07*pow(x,6)-3.984249226091e+07*pow(x,7)+2.042477997888e+07*pow(x,8)+3.257318956274e+07*pow(x,9)-3.884837593564e+06*pow(x,10)-8.541383619426e+07*pow(x,11)-4.889754546019e+07*pow(x,12)+3.381140479102e+08*pow(x,13)-6.743806190691e+08*pow(x,14)+1.189568543181e+09*pow(x,15)-4.644210089845e+08*pow(x,16)-4.368147267369e+08*pow(x,17)-1.206718752353e+09*pow(x,18)-8.572468469522e+08*pow(x,19)+3.141999332795e+09*pow(x,20)+1.025061675375e+09*pow(x,21)+3.684834899829e+09*pow(x,22)-5.428592303487e+09*pow(x,23)+1.056480078631e+10*pow(x,24)-2.285140598862e+10*pow(x,25)-1.540728671251e+10*pow(x,26)+2.271791672137e+10*pow(x,27)+1.583034975927e+10*pow(x,28)+1.177711435828e+10*pow(x,29)-8.864311265621e+10*pow(x,30)+8.354488892481e+10*pow(x,31)+9.384838932709e+10*pow(x,32)+3.379533780026e+10*pow(x,33)-1.161143696427e+11*pow(x,34)-6.601331582655e+10*pow(x,35)-2.364264278207e+11*pow(x,36)-3.488029079971e+10*pow(x,37)-2.445381518744e+11*pow(x,38)+1.217040715856e+12*pow(x,39)+1.206603200622e+11*pow(x,40)-1.874821916162e+12*pow(x,41)+8.041709691552e+11*pow(x,42)+3.328283655732e+12*pow(x,43)-5.507909509842e+12*pow(x,44)+3.581572350113e+12*pow(x,45)-1.883405939983e+12*pow(x,46)+8.047646370428e+12*pow(x,47)-2.375479351829e+13*pow(x,48)+2.867608116112e+13*pow(x,49)-1.656320896772e+13*pow(x,50)+4.513609749036e+12*pow(x,51);
- h[33]=3.425247456963e+02-4.264832008778e+02*x+3.664727663842e+03*pow(x,2)-6.136782539675e+04*pow(x,3)+4.821694575591e+05*pow(x,4)-1.193841693393e+06*pow(x,5)-3.042019521633e+06*pow(x,6)+1.973916879534e+07*pow(x,7)-2.002599126811e+07*pow(x,8)-2.627859383286e+07*pow(x,9)-3.240274894967e+07*pow(x,10)+2.093751213494e+08*pow(x,11)+1.512537047512e+07*pow(x,12)-3.252041957906e+08*pow(x,13)+2.115628593303e+08*pow(x,14)-8.482102576029e+08*pow(x,15)+4.458018924085e+08*pow(x,16)+2.731480944868e+08*pow(x,17)+2.779981857663e+09*pow(x,18)-6.744029785046e+08*pow(x,19)+5.282615779951e+08*pow(x,20)-3.701810954847e+09*pow(x,21)-9.010403710966e+09*pow(x,22)-1.062310799717e+08*pow(x,23)-5.946535311262e+09*pow(x,24)+1.992727865362e+10*pow(x,25)+3.001630915646e+10*pow(x,26)+1.006199575226e+10*pow(x,27)-1.310340900162e+10*pow(x,28)-5.917103434855e+10*pow(x,29)+1.028498773045e+11*pow(x,30)-1.066545289404e+11*pow(x,31)-8.418054427235e+10*pow(x,32)-7.454316096030e+10*pow(x,33)-1.621870307729e+11*pow(x,34)+7.024704610685e+10*pow(x,35)+6.489957345171e+11*pow(x,36)+2.219210454935e+11*pow(x,37)+7.164851000219e+11*pow(x,38)-1.436486203998e+12*pow(x,39)-3.373096358368e+11*pow(x,40)+7.616147706459e+11*pow(x,41)+1.102422965274e+12*pow(x,42)-4.412960319978e+12*pow(x,43)+3.943887612140e+12*pow(x,44)-4.200262841452e+12*pow(x,45)+2.192748183532e+12*pow(x,46)-8.165458388608e+12*pow(x,47)+2.696553904715e+13*pow(x,48)-2.856757517397e+13*pow(x,49)+2.319237644065e+13*pow(x,50)-1.295115768718e+13*pow(x,51);
- h[34]=3.539211287006e+02-5.484847279936e+02*x+7.569408780670e+03*pow(x,2)-1.347788782191e+05*pow(x,3)+1.394479977101e+06*pow(x,4)-8.446283181173e+06*pow(x,5)+3.104565991760e+07*pow(x,6)-6.387987236706e+07*pow(x,7)+4.674936630919e+07*pow(x,8)+4.205191609076e+07*pow(x,9)+3.185181405990e+07*pow(x,10)-2.926526972746e+08*pow(x,11)-1.576921591514e+07*pow(x,12)+7.069065959729e+08*pow(x,13)-9.508504172255e+08*pow(x,14)+1.809014786446e+09*pow(x,15)-1.035611301231e+09*pow(x,16)-5.341125408712e+08*pow(x,17)-3.355906771851e+09*pow(x,18)-2.269753381330e+08*pow(x,19)+3.778560315122e+09*pow(x,20)+4.139922944392e+09*pow(x,21)+1.052142403302e+10*pow(x,22)-8.593432922339e+09*pow(x,23)+1.633510924193e+10*pow(x,24)-4.139651290258e+10*pow(x,25)-4.000839836368e+10*pow(x,26)+1.918593834004e+10*pow(x,27)+3.491982863777e+10*pow(x,28)+6.654894826864e+10*pow(x,29)-1.885099250577e+11*pow(x,30)+1.725159102734e+11*pow(x,31)+1.596046208624e+11*pow(x,32)+9.865054545015e+10*pow(x,33)+6.852525947812e+09*pow(x,34)-1.771525643766e+11*pow(x,35)-7.255234944979e+11*pow(x,36)-2.141172085711e+11*pow(x,37)-7.756064191249e+11*pow(x,38)+2.535225126932e+12*pow(x,39)+3.838070905729e+11*pow(x,40)-3.142523869744e+12*pow(x,41)+1.426741428276e+11*pow(x,42)+7.376295705185e+12*pow(x,43)-8.546099852534e+12*pow(x,44)+6.399261975069e+12*pow(x,45)-3.926186738619e+12*pow(x,46)+1.737899438409e+13*pow(x,47)-4.859092604866e+13*pow(x,48)+5.374942886679e+13*pow(x,49)-4.021109112651e+13*pow(x,50)+1.883450530617e+13*pow(x,51);
- h[35]=3.635477592209e+02-4.683215674615e+02*x+2.480710026119e+03*pow(x,2)-2.111297037138e+04*pow(x,3)+1.352985532951e+05*pow(x,4)-5.824473573401e+05*pow(x,5)+3.096603927174e+06*pow(x,6)-1.369870923142e+07*pow(x,7)+1.823517946886e+07*pow(x,8)+7.066146612387e+07*pow(x,9)-2.128177755324e+08*pow(x,10)-2.988263490070e+07*pow(x,11)+4.091577978683e+08*pow(x,12)+1.175662823958e+08*pow(x,13)+8.055746467984e+07*pow(x,14)-1.721520149994e+09*pow(x,15)+1.646196590715e+09*pow(x,16)-2.989346719871e+09*pow(x,17)+2.651406890466e+09*pow(x,18)-3.995663605652e+08*pow(x,19)+9.983354634416e+09*pow(x,20)-5.819394998183e+09*pow(x,21)+6.030208555744e+09*pow(x,22)-7.412184623310e+08*pow(x,23)-3.701983776454e+10*pow(x,24)-4.176312032892e+10*pow(x,25)-2.540353538424e+10*pow(x,26)+8.917832014591e+10*pow(x,27)+1.451300076987e+11*pow(x,28)+6.748904207098e+10*pow(x,29)+1.662859532699e+11*pow(x,30)-1.989048677254e+11*pow(x,31)-3.364485131812e+11*pow(x,32)-6.602440781743e+11*pow(x,33)+2.420797485587e+11*pow(x,34)+3.101238966538e+11*pow(x,35)+3.411940934786e+11*pow(x,36)-7.387394952668e+11*pow(x,37)-1.072075757810e+12*pow(x,38)+4.934476961766e+11*pow(x,39)+9.164610970250e+12*pow(x,40)-4.330154240270e+12*pow(x,41)+3.231024659723e+12*pow(x,42)-7.213076878796e+12*pow(x,43)+1.634892993553e+12*pow(x,44)-4.150678718083e+12*pow(x,45)-3.270764524355e+13*pow(x,46)+1.697377609102e+13*pow(x,47)+8.326219643038e+12*pow(x,48)+3.245471409345e+13*pow(x,49)+3.820842314164e+13*pow(x,50)-6.311888000080e+13*pow(x,51);
- h[36]=3.746733225203e+02-4.353257076391e+02*x+8.299482264638e+02*pow(x,2)-6.252183708343e+03*pow(x,3)+5.200539003090e+04*pow(x,4)+5.534466862922e+05*pow(x,5)-8.575402790731e+06*pow(x,6)+4.100677747627e+07*pow(x,7)-6.718176367161e+07*pow(x,8)-1.241798682463e+08*pow(x,9)+7.265499789053e+08*pow(x,10)-1.203436602527e+09*pow(x,11)+6.773076119372e+08*pow(x,12)+3.627992590108e+08*pow(x,13)-1.021696432130e+09*pow(x,14)+1.571762393428e+09*pow(x,15)-6.481827859688e+08*pow(x,16)-3.405537437010e+09*pow(x,17)+4.995356814765e+09*pow(x,18)+4.986596046228e+09*pow(x,19)-1.452937945895e+10*pow(x,20)+2.166394438691e+09*pow(x,21)-1.071169030165e+09*pow(x,22)+3.120219029020e+10*pow(x,23)-2.122004726272e+10*pow(x,24)-2.486107779815e+10*pow(x,25)+6.268875308782e+09*pow(x,26)+5.185872921397e+10*pow(x,27)-3.165899546850e+10*pow(x,28)+2.174715967195e+10*pow(x,29)-3.332984128597e+10*pow(x,30)-1.055485358916e+11*pow(x,31)+1.502352758075e+11*pow(x,32)+1.780350978261e+11*pow(x,33)-7.950193430087e+11*pow(x,34)+2.690275239534e+11*pow(x,35)+1.970597768779e+12*pow(x,36)-3.569862981542e+12*pow(x,37)+1.251537720157e+12*pow(x,38)+2.428987985959e+12*pow(x,39)+8.676522287442e+11*pow(x,40)+6.624154201634e+12*pow(x,41)-1.519277873193e+13*pow(x,42)-9.264122589635e+12*pow(x,43)-7.597521813214e+11*pow(x,44)+2.493056845585e+13*pow(x,45)+1.368571831381e+13*pow(x,46)-9.502121113843e+12*pow(x,47)+1.192133441831e+13*pow(x,48)-1.197291892858e+14*pow(x,49)+1.494057413196e+14*pow(x,50)-5.538134425264e+13*pow(x,51);
- return ((T/10-4)-(Tx-1))/2*(h[Tx+1]-h[Tx-1])+h[Tx-1];
- }*/
- double Hx(double x,double T) {
- if (x<concentraciones.front() || x>concentraciones.back() || T<temperaturas.front() || T>temperaturas.back()) {
- throw std::logic_error("x o T fuera de rango.");
- }
- size_t i=0;
- while(i<concentraciones.size()-1 && x>concentraciones[i+1]) {
- i++;
- }
- size_t j=0;
- while(j<temperaturas.size()-1 && T>temperaturas[j+1]) {
- j++;
- }
- double x1=concentraciones[i],x2=concentraciones[i+1];
- double T1=temperaturas[j],T2=temperaturas[j+1];
- double Q11=tabla[i][j];
- double Q12=tabla[i][j+1];
- double Q21=tabla[i+1][j];
- double Q22=tabla[i+1][j+1];
- return (Q11*(x2-x)*(T2-T)+Q21*(x-x1)*(T2-T)+Q12*(x2-x)*(T-T1)+Q22*(x-x1)*(T-T1))/((x2-x1)*(T2-T1));
- }
- double CP(double T) {
- if (T<temperaturas.front()||T>temperaturas.back()) {
- throw std::out_of_range("Temperatura fuera del rango.");
- }
- for(size_t i=0; i<temperaturas.size()-1; ++i) {
- if (T>=temperaturas[i] && T<=temperaturas[i+1]) {
- double t1=temperaturas[i];
- double t2=temperaturas[i+1];
- double cp1=cp_values[i];
- double cp2=cp_values[i+1];
- return cp1+(cp2-cp1)*(T-t1)/(t2-t1);
- }
- }
- throw std::logic_error("No se encontro.");
- }
- double determinante(double b[9][9],unsigned short int n) {
- Eigen::MatrixXd matrix(n,n);
- for (unsigned short int i=0; i<n; ++i) {
- for (unsigned short int j=0; j<n; ++j) {
- matrix(i,j)=b[i][j];
- }
- }
- return matrix.determinant();
- }
- void escribir(void) {
- label=0;
- cout<<endl<<"*********************************************"<<endl;
- cout<<"Orden: ";
- for(int i=0; i<size; i++) {
- cout<<efecto[i];
- }
- cout<<endl;
- cout<<"Alimentaci\242n [lbm/h]="<<L[0]<<endl;
- cout<<"Temperatura de alimentaci\242n [\370F]="<<T[0]<<endl;
- cout<<"Concentraci\242n de entrada (fracci\242n en peso)="<<x[0]<<endl;
- cout<<"Concentraci\242n de salida (fracci\242n en peso)="<<x[efecto[size-1]]<<endl;
- cout<<"Presi\242n del vapor vivo [psia]="<<P[0]<<endl;
- cout<<"Presi\242n del efecto "<<size<<" [psia]="<<P[size]<<endl;
- cout<<"Coeficientes globales de transferencia de calor [BTU/(h*ft\375*\370F)]"<<endl;
- for(int i=0; i<size; i++) {
- cout<<"U["<<i<<"]="<<U[i]<<endl;
- }
- for(int i=0; i<=size; i++) {
- cout<<"x["<<i<<"]="<<x[i]<<endl;
- }
- for(int i=0; i<=size; i++) {
- cout<<"Tsat["<<i<<"]="<<Tsat[i]<<endl;
- }
- for(int i=0; i<=size; i++) {
- cout<<"T["<<i<<"]="<<T[i]<<endl;
- }
- for(int i=0; i<=size; i++) {
- cout<<"L["<<i<<"]="<<L[i]<<endl;
- }
- for(int i=0; i<size; i++) {
- cout<<"epe["<<i<<"]="<<epe[i]<<endl;
- }
- for(int i=0; i<=size; i++) {
- cout<<"A["<<i<<"]="<<A[i]<<endl;
- }
- for(int i=0; i<=size; i++) {
- cout<<"deltaT["<<i<<"]="<<deltaT[i]<<endl;
- }
- for(int i=0; i<size; i++) {
- cout<<"Q["<<i<<"]="<<Q[i]<<endl;
- }
- cout<<"S="<<V[0]<<endl;
- cout<<"Area media="<<A[0]<<endl;
- cout<<"Economia="<<economia<<endl;
- cout<<endl<<"*********************************************"<<endl;
- latex();
- }
- double contar(double n) {
- return floor(n*100+0.5)/100;
- }
- void latex(void) {
- setprecision(6);
- ofstream f;
- f.open("EvaporadorNaOH.tex",ios::out);
- if(f.fail()) {
- cout<<"ERROR AL CREAR EL ARCHIVO"<<endl;
- exit(1);
- }
- double suma=0;
- int random=1+rand()%7;
- f<<"\134documentclass[addpoints,spanish,11pt,letterpaper]{exam}"<<endl;
- f<<"\134usepackage{amsmath}"<<endl;
- f<<"\134usepackage{";
- switch(random) {
- case 1: {
- f<<"fourier";
- break;
- }
- case 2: {
- f<<"fouriernc";
- break;
- }
- case 3: {
- f<<"kpfonts";
- break;
- }
- case 4: {
- f<<"amsfonts";
- break;
- }
- case 5: {
- f<<"kmath,kerkis";
- break;
- }
- case 6: {
- f<<"libertinus";
- break;
- }
- default: {
- f<<"txfonts";
- break;
- }
- }
- f<<"}"<<endl;
- f<<"\134usepackage[T1]{fontenc}"<<endl;
- f<<"\134usepackage[left=1.0cm,right=1cm,top=1cm,bottom=1cm]{geometry}"<<endl;
- f<<"\134usepackage[spanish]{babel}"<<endl;
- f<<"\134usepackage{hyperref}"<<endl;
- f<<"\134usepackage{multicol}"<<endl;
- f<<"\134usepackage[dvipsnames]{xcolor}"<<endl;
- f<<"\134spanishdecimal{.}"<<endl;
- f<<"\134printanswers"<<endl;
- f<<"\134unframedsolutions"<<endl;
- f<<"\134renewcommand{\134solutiontitle}{\134textbf{Soluci\134'on:}}"<<endl;
- f<<"\134usepackage[pdftex]{pict2e}"<<endl;
- f<<"\134usepackage{wrapfig}"<<endl;
- f<<"\134begin{document}"<<endl;
- f<<"\134begin{questions}"<<endl;
- f<<"\134question Un evaporador de "<<size<<" efectos est\134'a concentrando una soluci\134'on de sosa c\134'austica del "<<x[0]*100<<" \134% en peso y a "<<T[0]<<" $^{\134circ}\134text{F}$ hasta el "<<x[efecto[size-1]]*100<<" \134%. El vapor empleado entra a "<<P[0]<<" psia. La presi\134'on absoluta del \134'ultimo efecto es "<<P[size]<<" psia. La velocidad de alimentaci\134'on es "<<L[0]<<" $\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}$.";
- f<<" Los coeficientes de transferencia de calor son ";
- for(int i=0; i<size; i++) {
- f<<"$U_{"<<i+1<<"}="<<U[i]<<"\176\134tfrac{\134text{BTU}}{\134text{h}\134cdot \134text{ft}^2 \134cdot ^{\134circ}\134text{F}}$";
- if(i<size-2) {
- f<<",";
- } else {
- if(i==size-2) {
- f<<" y ";
- }
- }
- }
- f<<". Todos los efectos tienen la misma \134'area. El orden de los efectos es ";
- for(int i=0; i<size; i++) {
- f<<efecto[i];
- }
- f<<". Calcule:"<<endl;
- f<<"\134begin{center}"<<endl;
- f<<"\134begin{parts}"<<endl;
- f<<"\134part Las \134'areas de los efectos."<<endl;
- f<<"\134part Flujo m\134'asico del vapor vivo."<<endl;
- f<<"\134part La econom\134'ia."<<endl;
- f<<"\134end{parts}"<<endl;
- f<<"\134end{center}"<<endl;
- f<<"\134end{questions}"<<endl;
- f<<"\134begin{solution}"<<endl<<endl;
- int altura=size;
- /*Empieza los dibujos*/
- f<<"\134setlength{\134unitlength}{0.5cm}"<<endl;
- bool ejex[50][50],ejey[50][50];
- for(int i=0; i<50; i++) {
- for(int j=0; j<50; j++) {
- ejex[i][j]=false;
- ejey[i][j]=false;
- }
- }
- for(int i=0; i<size; i++) {
- double coord_x1,coord_x2;
- if(i!=size-1) {
- coord_x1=4*efecto[i]-1;
- coord_x2=4*efecto[i+1]-2.5;
- } else {
- coord_x1=4*efecto[i]-1;
- }
- int x1=2*efecto[i]-1;
- int x2;
- if(i!=size-1) {
- x2=2*efecto[i+1]-2;
- } else {
- x2=x1+1;
- }
- unsigned short int fila=0,verificar;
- do {
- verificar=0;
- fila++;
- if(x1<x2) {
- for(int k=x1; k<x2; k++) {
- if(ejex[fila][k]) {
- verificar++;
- }
- }
- } else {
- for(int k=x2; k<x1; k++) {
- if(ejex[fila][k]) {
- verificar++;
- }
- }
- }
- } while(verificar>0);
- bool curva_adelante=false;
- bool curva_atras=false;
- for(int k=0; k<fila; k++) {
- ejey[k][x1]=true;
- if(ejex[k+1][x1] and ejex[k+1][x1-1]) {
- curva_adelante=true;
- } else {
- curva_adelante=false;
- }
- if(curva_adelante and curva_atras) {
- curva_atras=true;
- } else if(curva_adelante and curva_atras==false) {
- curva_atras=true;
- } else if(curva_adelante==false and curva_atras) {
- curva_atras=false;
- } else if(curva_adelante==false and curva_atras==false) {
- curva_atras=false;
- }
- curva_atras=curva_adelante;
- }
- if(i<size-1) {
- curva_adelante=false;
- curva_atras=false;
- if(x2!=0) {
- for(int k=0; k<fila; k++) {
- ejey[k][x2]=true;
- if(ejex[k+1][x2] and ejex[k+1][x2-1]) {
- curva_adelante=true;
- } else {
- curva_adelante=false;
- }
- if(curva_adelante and curva_atras) {
- curva_atras=true;
- } else if(curva_adelante and curva_atras==false) {
- curva_atras=true;
- } else if(curva_adelante==false and curva_atras) {
- curva_atras=false;
- } else if(curva_adelante==false and curva_atras==false) {
- curva_atras=false;
- }
- curva_atras=curva_adelante;
- }
- }
- }
- curva_adelante=false;
- curva_atras=false;
- if(i!=size-1) {
- if(x1<x2) {
- for(int k=x1; k<x2; k++) {
- if(k==x1) {
- curva_atras=false;
- }
- ejex[fila][k]=true;
- if(ejey[fila][k+1] and ejey[fila-1][k+1]) {
- curva_adelante=true;
- } else {
- curva_adelante=false;
- }
- if(k%2==0) {
- if(curva_adelante and curva_atras) {
- curva_atras=false;
- }
- if(curva_adelante and curva_atras==false) {
- curva_atras=true;
- }
- if(curva_adelante==false and curva_atras) {
- curva_atras=false;
- }
- if(curva_adelante==false and curva_atras==false) {
- curva_atras=false;
- }
- coord_x1=coord_x1+1.5;
- } else {
- if(curva_adelante and curva_atras) {
- curva_atras=false;
- }
- if(curva_adelante and curva_atras==false) {
- curva_atras=true;
- }
- if(curva_adelante==false and curva_atras) {
- curva_atras=false;
- }
- if(curva_adelante==false and curva_atras==false) {
- curva_atras=false;
- }
- coord_x1=coord_x1+2.5;
- }
- curva_atras=curva_adelante;
- }
- } else {
- for(int k=x2; k<x1; k++) {
- if(k==x2) {
- curva_atras=false;
- }
- ejex[fila][k-1]=true;
- if(ejey[fila][k+1] and ejey[fila-1][k+1]) {
- curva_adelante=true;
- } else {
- curva_adelante=false;
- }
- if(k%2==0) {
- if(curva_adelante and curva_atras) {
- curva_atras=false;
- } else if(curva_adelante and curva_atras==false) {
- curva_atras=true;
- } else if(curva_adelante==false and curva_atras) {
- curva_atras=false;
- } else if(curva_adelante==false and curva_atras==false) {
- curva_atras=false;
- }
- coord_x2=coord_x2+1.5;
- } else {
- if(curva_adelante and curva_atras) {
- curva_atras=false;
- } else if(curva_adelante and curva_atras==false) {
- curva_atras=true;
- } else if(curva_adelante==false and curva_atras) {
- curva_atras=false;
- } else if(curva_adelante==false and curva_atras==false) {
- curva_atras=false;
- }
- coord_x2=coord_x2+2.5;
- }
- curva_atras=curva_adelante;
- }
- }
- }
- }
- altura=2;
- for(int i=0; i<50; i++) {
- unsigned short int po=0;
- for(int j=0; j<50; j++) {
- po=po+ejex[i][j];
- }
- if(po>0) {
- altura++;
- }
- }
- for(int i=0; i<50; i++) {
- for(int j=0; j<50; j++) {
- ejex[i][j]=false;
- ejey[i][j]=false;
- }
- }
- f<<"\134begin{picture}("<<size*4+2<<","<<5+altura<<")"<<endl;
- double distanciax,distanciay;
- for(int i=0; i<size; i++) {
- /*ENtrada de vapor,S V1 V2 V3... ETC*/
- if(i==0) {
- f<<"\134put(0,"<<altura+1<<"){\134vector(1,0){2}}"<<endl;
- } else {
- f<<"\134put("<<i*4+1<<","<<altura+1<<"){\134vector(1,0){1}}"<<endl;
- }
- /*SALIDA DE VAPOR de cada efecto*/
- f<<"\134put("<<i*4+3<<","<<altura+3<<"){\134line(0,1){1}}"<<endl;
- if(i==size-1) {
- f<<"\134put("<<i*4+3<<","<<altura+4<<"){\134vector(1,0){2}}"<<endl;
- } else {
- f<<"\134put("<<i*4+3<<","<<altura+4<<"){\134line(1,0){2}}"<<endl;
- f<<"\134put("<<i*4+5<<","<<altura+4<<"){\134line(0,-1){3}}"<<endl;
- f<<"\134put("<<i*4+5<<","<<altura+1<<"){\134vector(1,0){1}}"<<endl;
- }
- /*Efectos*/
- f<<"\134put("<<i*4+2<<","<<altura+1<<"){\134line(0,1){2}}"<<endl;
- f<<"\134put("<<i*4+2<<","<<altura+3<<"){\134line(1,0){2}}"<<endl;
- f<<"\134put("<<i*4+4<<","<<altura+3<<"){\134line(0,-1){2}}"<<endl;
- f<<"\134put("<<i*4+2<<","<<altura+1<<"){\134line(1,-1){1}}"<<endl;
- f<<"\134put("<<i*4+3<<","<<altura<<"){\134line(1,1){1}}"<<endl;
- f<<"\134put("<<i*4+2<<","<<altura+1<<"){\134line(1,1){0.25}}"<<endl;
- f<<"\134put("<<i*4+2.25<<","<<altura+1+0.25<<"){\134line(1,-1){0.25}}"<<endl;
- f<<"\134put("<<i*4+2.5<<","<<altura+1<<"){\134line(1,1){0.25}}"<<endl;
- f<<"\134put("<<i*4+2.75<<","<<altura+1.25<<"){\134line(1,-1){0.25}}"<<endl;
- f<<"\134put("<<i*4+3<<","<<altura+1<<"){\134line(1,1){0.25}}"<<endl;
- f<<"\134put("<<i*4+3.25<<","<<altura+1.25<<"){\134line(1,-1){0.25}}"<<endl;
- f<<"\134put("<<i*4+3.5<<","<<altura+1<<"){\134line(1,1){0.25}}"<<endl;
- f<<"\134put("<<i*4+3.75<<","<<altura+1.25<<"){\134line(1,-1){0.25}}"<<endl;
- f<<"\134put("<<i*4+4<<","<<altura+1<<"){\134line(1,0){0.5}}"<<endl;
- f<<"\134put("<<i*4+4.5<<","<<altura+1<<"){\134vector(0,-1){0.5}}"<<endl;
- /*Entrada de los licores*/
- f<<"\134put("<<i*4+1.5<<","<<altura+2.5<<"){\134vector(1,0){0.5}}"<<endl;
- if(i!=efecto[0]-1) {
- f<<"\134put("<<i*4+1.5<<","<<altura<<"){\134line(0,1){0.8}}"<<endl;
- f<<"\134put("<<i*4+1.5<<","<<altura+1<<"){\134oval(0.4,0.4)[l]}"<<endl;
- f<<"\134put("<<i*4+1.5<<","<<altura+1.2<<"){\134line(0,1){1.3}}"<<endl;
- }
- /*nombre de los efectos*/
- f<<"\134put("<<i*4+2.6<<","<<altura+2<<"){{\134footnotesize ("<<i+1<<")}}"<<endl;
- /*Los LICORES y el enredo de abajo*/
- /*ABAJO*/
- double coord_x1,coord_x2;
- if(i!=size-1) {
- coord_x1=4*efecto[i]-1;
- coord_x2=4*efecto[i+1]-2.5;
- } else {
- coord_x1=4*efecto[i]-1;
- }
- int x1=2*efecto[i]-1;
- int x2;
- if(i!=size-1) {
- x2=2*efecto[i+1]-2;
- } else {
- x2=x1+1;
- }
- unsigned short int fila=0,verificar;
- do {
- verificar=0;
- fila++;
- if(x1<x2) {
- for(int k=x1; k<x2; k++) {
- if(ejex[fila][k]) {
- verificar++;
- }
- }
- } else {
- for(int k=x2; k<x1; k++) {
- if(ejex[fila][k]) {
- verificar++;
- }
- }
- }
- } while(verificar>0);
- bool curva_adelante=false;
- bool curva_atras=false;
- for(int k=0; k<fila; k++) {
- ejey[k][x1]=true;
- if(ejex[k+1][x1] and ejex[k+1][x1-1]) {
- curva_adelante=true;
- } else {
- curva_adelante=false;
- }
- if(curva_adelante and curva_atras) {
- f<<"\134put("<<coord_x1<<","<<altura-k-0.2<<"){\134line(0,-1){0.6}}"<<endl;
- f<<"\134put("<<coord_x1<<","<<altura-k-1<<"){\134oval(0.4,0.4)[l]}"<<endl;
- curva_atras=true;
- } else if(curva_adelante and curva_atras==false) {
- f<<"\134put("<<coord_x1<<","<<altura-k<<"){\134line(0,-1){0.8}}"<<endl;
- f<<"\134put("<<coord_x1<<","<<altura-k-1<<"){\134oval(0.4,0.4)[l]}"<<endl;
- curva_atras=true;
- } else if(curva_adelante==false and curva_atras) {
- f<<"\134put("<<coord_x1<<","<<altura-k-0.2<<"){\134line(0,-1){0.8}}"<<endl;
- curva_atras=false;
- } else if(curva_adelante==false and curva_atras==false) {
- f<<"\134put("<<coord_x1<<","<<altura-k<<"){\134line(0,-1){1}}"<<endl;
- curva_atras=false;
- }
- curva_atras=curva_adelante;
- }
- if(i<size-1) {
- curva_adelante=false;
- curva_atras=false;
- if(x2!=0) {
- for(int k=0; k<fila; k++) {
- ejey[k][x2]=true;
- if(ejex[k+1][x2] and ejex[k+1][x2-1]) {
- curva_adelante=true;
- } else {
- curva_adelante=false;
- }
- if(curva_adelante and curva_atras) {
- f<<"\134put("<<coord_x2<<","<<altura-k-0.2<<"){\134line(0,-1){0.6}}"<<endl;
- f<<"\134put("<<coord_x2<<","<<altura-k-1<<"){\134oval(0.4,0.4)[l]}"<<endl;
- curva_atras=true;
- } else if(curva_adelante and curva_atras==false) {
- f<<"\134put("<<coord_x2<<","<<altura-k<<"){\134line(0,-1){0.8}}"<<endl;
- f<<"\134put("<<coord_x2<<","<<altura-k-1<<"){\134oval(0.4,0.4)[l]}"<<endl;
- curva_atras=true;
- } else if(curva_adelante==false and curva_atras) {
- f<<"\134put("<<coord_x2<<","<<altura-k-0.2<<"){\134line(0,-1){0.8}}"<<endl;
- curva_atras=false;
- } else if(curva_adelante==false and curva_atras==false) {
- f<<"\134put("<<coord_x2<<","<<altura-k<<"){\134line(0,-1){1}}"<<endl;
- curva_atras=false;
- }
- curva_atras=curva_adelante;
- }
- } else {
- f<<"\134put("<<coord_x2<<","<<altura<<"){\134line(0,-1){"<<fila<<"}}"<<endl;
- }
- }
- /*HORIZONTAL*/
- curva_adelante=false;
- curva_atras=false;
- if(i!=size-1) {
- if(x1<x2) {
- for(int k=x1; k<x2; k++) {
- if(k==x1) {
- curva_atras=false;
- }
- ejex[fila][k]=true;
- if(ejey[fila][k+1] and ejey[fila-1][k+1]) {
- curva_adelante=true;
- } else {
- curva_adelante=false;
- }
- if(k%2==0) {
- if(curva_adelante and curva_atras) {
- f<<"\134put("<<coord_x1+0.2<<","<<altura-fila<<"){\134line(1,0){1.1}}"<<endl;
- f<<"\134put("<<coord_x1+1.5<<","<<altura-fila<<"){\134oval(0.4,0.4)[b]}"<<endl;
- curva_atras=false;
- }
- if(curva_adelante and curva_atras==false) {
- f<<"\134put("<<coord_x1<<","<<altura-fila<<"){\134line(1,0){1.3}}"<<endl;
- f<<"\134put("<<coord_x1+1.5<<","<<altura-fila<<"){\134oval(0.4,0.4)[b]}"<<endl;
- curva_atras=true;
- }
- if(curva_adelante==false and curva_atras) {
- f<<"\134put("<<coord_x1+0.2<<","<<altura-fila<<"){\134line(1,0){1.3}}"<<endl;
- curva_atras=false;
- }
- if(curva_adelante==false and curva_atras==false) {
- f<<"\134put("<<coord_x1<<","<<altura-fila<<"){\134line(1,0){1.5}}"<<endl;
- curva_atras=false;
- }
- coord_x1=coord_x1+1.5;
- } else {
- if(curva_adelante and curva_atras) {
- f<<"\134put("<<coord_x1+0.2<<","<<altura-fila<<"){\134line(1,0){2.1}}"<<endl;
- f<<"\134put("<<coord_x1+2.5<<","<<altura-fila<<"){\134oval(0.4,0.4)[b]}"<<endl;
- curva_atras=false;
- }
- if(curva_adelante and curva_atras==false) {
- f<<"\134put("<<coord_x1<<","<<altura-fila<<"){\134line(1,0){2.3}}"<<endl;
- f<<"\134put("<<coord_x1+2.5<<","<<altura-fila<<"){\134oval(0.4,0.4)[b]}"<<endl;
- curva_atras=true;
- }
- if(curva_adelante==false and curva_atras) {
- f<<"\134put("<<coord_x1+0.2<<","<<altura-fila<<"){\134line(1,0){2.3}}"<<endl;
- curva_atras=false;
- }
- if(curva_adelante==false and curva_atras==false) {
- f<<"\134put("<<coord_x1<<","<<altura-fila<<"){\134line(1,0){2.5}}"<<endl;
- curva_atras=false;
- }
- coord_x1=coord_x1+2.5;
- }
- curva_atras=curva_adelante;
- }
- } else {
- for(int k=x2; k<x1; k++) {
- if(k==x2) {
- curva_atras=false;
- }
- ejex[fila][k-1]=true;
- if(ejey[fila][k+1] and ejey[fila-1][k+1]) {
- curva_adelante=true;
- } else {
- curva_adelante=false;
- }
- if(k%2==0) {
- if(curva_adelante and curva_atras) {
- f<<"\134put("<<coord_x2+0.2<<","<<altura-fila<<"){\134line(1,0){1.1}}"<<endl;
- f<<"\134put("<<coord_x2+1.5<<","<<altura-fila<<"){\134oval(0.4,0.4)[b]}"<<endl;
- curva_atras=false;
- } else if(curva_adelante and curva_atras==false) {
- f<<"\134put("<<coord_x2<<","<<altura-fila<<"){\134line(1,0){1.3}}"<<endl;
- f<<"\134put("<<coord_x2+1.5<<","<<altura-fila<<"){\134oval(0.4,0.4)[b]}"<<endl;
- curva_atras=true;
- } else if(curva_adelante==false and curva_atras) {
- f<<"\134put("<<coord_x2+0.2<<","<<altura-fila<<"){\134line(1,0){1.3}}"<<endl;
- curva_atras=false;
- } else if(curva_adelante==false and curva_atras==false) {
- f<<"\134put("<<coord_x2<<","<<altura-fila<<"){\134line(1,0){1.5}}"<<endl;
- curva_atras=false;
- }
- coord_x2=coord_x2+1.5;
- } else {
- if(curva_adelante and curva_atras) {
- f<<"\134put("<<coord_x2+0.2<<","<<altura-fila<<"){\134line(1,0){2.1}}"<<endl;
- f<<"\134put("<<coord_x2+2.5<<","<<altura-fila<<"){\134oval(0.4,0.4)[b]}"<<endl;
- curva_atras=false;
- } else if(curva_adelante and curva_atras==false) {
- f<<"\134put("<<coord_x2<<","<<altura-fila<<"){\134line(1,0){2.3}}"<<endl;
- f<<"\134put("<<coord_x2+2.5<<","<<altura-fila<<"){\134oval(0.4,0.4)[b]}"<<endl;
- curva_atras=true;
- } else if(curva_adelante==false and curva_atras) {
- f<<"\134put("<<coord_x2+0.2<<","<<altura-fila<<"){\134line(1,0){2.3}}"<<endl;
- curva_atras=false;
- } else if(curva_adelante==false and curva_atras==false) {
- f<<"\134put("<<coord_x2<<","<<altura-fila<<"){\134line(1,0){2.5}}"<<endl;
- curva_atras=false;
- }
- coord_x2=coord_x2+2.5;
- }
- curva_atras=curva_adelante;
- }
- }
- } else {
- f<<"\134put("<<coord_x1<<","<<altura-fila<<"){\134vector(1,0){1}}"<<endl;
- }
- }
- f<<"\134put(3,0){{\134textit{\134footnotesize Diagrama de flujo para la evaporaci\134'on de "<<size<<" efectos de orden $";
- for(int i=0; i<size; i++) {
- f<<efecto[i];
- if(i<size-1) {
- f<<" \134rightarrow ";
- }
- }
- f<<"$.}}}"<<endl;
- f<<"\134end{picture}"<<endl;
- f<<"\134begin{description}"<<endl;
- f<<"\134item[Paso 1:] Se realiza un \134emph{balance de materia} global y en cada efecto para calcular la cantidad total vaporizada y para los s\134'olidos. El producto es ";
- f<<"\134begin{math}"<<endl;
- f<<"L_{"<<io[efecto[size-1]][sale]<<"}";
- f<<"\134end{math}"<<endl;
- f<<",y las inc\134'ognitas son ";
- for(int i=0; i<size-1; i++) {
- f<<"\134begin{math}"<<endl;
- f<<"L_{"<<incognita[i]<<"}";
- f<<"\134end{math}"<<endl;
- f<<",";
- }
- for(int i=0; i<size-1; i++) {
- f<<"\134begin{math}"<<endl;
- f<<"T_{S"<<i+2<<"}";
- f<<"\134end{math}"<<endl;
- if(i<size-3) {
- f<<",";
- }
- if(i==size-3) {
- f<<" y ";
- }
- }
- f<<". Para la sosa c\134'austica el balance queda:"<<endl;
- f<<"\134begin{align*}"<<endl;
- f<<"F\134cdot x_{F}&=L_{"<<io[efecto[size-1]][sale]<<"}\134cdot x_{"<<io[efecto[size-1]][sale]<<"}\134\134"<<endl;
- f<<"L_{"<<io[efecto[size-1]][sale]<<"}&="<<"\134frac{\134left("<<L[0]<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}\134right)\134left("<<x[0]<<"\134right)}{"<<x[io[efecto[size-1]][sale]]<<"}\134\134"<<endl;
- f<<"L_{"<<io[efecto[size-1]][sale]<<"}&="<<contar(L[io[efecto[size-1]][sale]])<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}"<<endl;
- f<<"\134end{align*}"<<endl;
- f<<"Entonces se sustituye en la ecuaci\134'on del balance global:"<<endl;
- f<<"\134begin{align*}"<<endl;
- f<<"F&=";
- for(int i=0; i<size; i++) {
- f<<"V_{"<<i+1<<"}+";
- }
- f<<"L_{"<<io[efecto[size-1]][sale]<<"}\134\134"<<endl;
- f<<"F-L_{"<<io[efecto[size-1]][sale]<<"}&=";
- for(int i=0; i<size; i++) {
- f<<"V_{"<<i+1<<"}";
- if(i<size-1) {
- f<<"+";
- } else {
- f<<endl;
- }
- }
- f<<"\134\134"<<endl;
- f<<L[0]<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}-"<<L[io[efecto[size-1]][sale]]<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}&=";
- for(int i=0; i<size; i++) {
- f<<"V_{"<<i+1<<"}";
- if(i<size-1) {
- f<<"+";
- } else {
- f<<endl;
- }
- }
- f<<"\134end {align*}"<<endl;
- f<<"La cantidad total vaporizada son las corrientes "<<endl;
- f<<"\134begin{math}"<<endl;
- for(int i=0; i<size; i++) {
- f<<"V_{"<<i+1<<"}";
- suma=suma+V[i+1];
- if(i<size-1) {
- f<<"+";
- } else {
- f<<"="<<suma<<"\176\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}."<<endl;
- }
- }
- f<<"\134end{math}"<<endl;
- f<<"Supondr\134'e las concentraciones "<<endl;
- for(int i=0; i<size-1; i++) {
- f<<"\134begin{math}"<<endl;
- f<<"x_{"<<incognita[i]<<"}="<<x[incognita[i]]*100<<"\134%"<<endl;
- f<<"\134end{math}"<<endl;
- if(i<size-3) {
- f<<",";
- } else {
- if(i==size-3) {
- f<<" y ";
- }
- }
- }
- f<<". De esta forma el balance de sosa c\134'austica en cada efecto proporciona los valores de la fase l\134'iquida:"<<endl;
- f<<"\134begin{multicols}{";
- if(size>3 and size<6) {
- f<<size-1;
- } else {
- f<<2;
- }
- f<<"}"<<endl;
- for(int i=0; i<size-1; i++) {
- f<<"\134begin{center}"<<endl;
- f<<"\134emph{Para el efecto "<<incognita[i]<<"}"<<endl;
- f<<"\134end{center}"<<endl;
- f<<"\134begin{align*}"<<endl;
- f<<"F\134cdot x_{F}&=L_{"<<incognita[i]<<"}\134cdot x_{"<<incognita[i]<<"}\134\134"<<endl;
- f<<"L_{"<<incognita[i]<<"}&=\134frac{\134left("<<L[0]<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}\134right)\134cdot\134left("<<x[0]<<"\134right)}{"<<x[incognita[i]]<<"} \134\134"<<endl;
- f<<"L_{"<<incognita[i]<<"}&="<<L[incognita[i]]<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}"<<endl;
- f<<"\134end{align*}"<<endl;
- }
- f<<"\134end{multicols}"<<endl;
- f<<"Y ahora se procede a calcular las corrientes de vapor,y luego se comprueba que la suma de esas corrientes deben de dar $"<<suma<<"\176\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}$:"<<endl;
- f<<"\134begin{multicols}{2}"<<endl;
- f<<"\134noindent";
- for(int i=0; i<size; i++) {
- f<<"\134emph{Para el efecto "<<i+1<<"}"<<endl;
- f<<"\134begin{align*}"<<endl;
- if(i+1==efecto[0]) {
- f<<"F&=L_{"<<io[i+1][sale]<<"}+V_{"<<io[i+1][sale]<<"}\134\134"<<endl;
- f<<"F-L_{"<<io[i+1][sale]<<"}&=V_{"<<io[i+1][sale]<<"}\134\134"<<endl;
- } else {
- f<<"L_{"<<io[i+1][entra]<<"}&=L_{"<<io[i+1][sale]<<"}+V_{"<<io[i+1][sale]<<"}\134\134"<<endl;
- f<<"L_{"<<io[i+1][entra]<<"}-L_{"<<io[i+1][sale]<<"}&=V_ {"<<io[i+1][sale]<<"}\134\134"<<endl;
- }
- f<<contar(L[io[i+1][entra]])<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}-"<<contar(L[io[i+1][sale]])<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}&=V_{"<<io[i+1][sale]<<"}\134\134"<<endl;
- f<<"V_{"<<io[i+1][sale]<<"}&="<<contar(V[io[i+1][sale]])<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}"<<endl;
- f<<"\134end{align*}"<<endl;
- }
- f<<"\134end{multicols}"<<endl;
- f<<"\134begin{align*}"<<endl;
- for(int i=0; i<size; i++) {
- f<<"V_{"<<i+1<<"}";
- if(i<size-1) {
- f<<"+";
- }
- }
- f<<"&="<<suma<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}\134\134"<<endl;
- for(int i=0; i<size; i++) {
- f<<V[i+1]<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}";
- if(i<size-1) {
- f<<"+";
- }
- }
- f<<"&="<<suma<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}\134\134"<<endl;
- f<<suma<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}&="<<suma<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}\134\134"<<endl;
- f<<"\134end{align*}"<<endl;
- f<<"Con esto \134'ultimo se comprueba que las concentraciones supuestas son v\134'alidas. Sin embargo,no se sabe si son parte de la soluci\134'on."<<endl<<endl;
- f<<"\134item[Paso 2:] Se calcula la temperatura de saturaci\134'on del \134'ultimo efecto. Se necesita suponer las temperaturas de saturaci\134'on de los efectos ";
- for(int i=0; i<size; i++) {
- f<<i+1;
- if(i<size-2) {
- f<<",";
- } else {
- if(i==size-2) {
- f<<" y ";
- }
- }
- }
- f<<" ya que se requieren para el c\134'alculo de los EPE's."<<endl<<endl;
- f<<"La temperatura de saturaci\134'on del vapor vivo es $"<<contar(Tsat[0])<<"\176^{\134circ}\134text{F}$ leyendo las tablas de vapor a $P="<<contar(P[0])<<"$ psia."<<endl<<endl;
- f<<"La temperatura de saturaci\134'on del efecto "<<size<<" es $"<<contar(Tsat[size])<<"\176^{\134circ}\134text{F}$ leyendo las tablas de vapor a $P="<<contar(P[size])<<"$ psia."<<endl<<endl;
- f<<"Las temperaturas de saturaci\134'on supuestas son:";
- f<<"\134begin{displaymath}"<<endl;
- f<<"\134begin{array}{rcl}"<<endl;
- for(int i=1; i<size; i++) {
- f<<"T_{S"<<i+1<<"}&=&"<<contar(Tsat[i])<<"^{\134circ}\134text{F}\134\134"<<endl;
- }
- f<<"\134end{array}"<<endl;
- f<<"\134end{displaymath}"<<endl;
- f<<endl<<endl;
- f<<"\134item[Paso 3:] Se calcula los EPE's y los $\134Delta T$ global y de cada efecto:"<<endl<<endl;
- f<<"Los EPE's se calculan con el diagrama de D\134\42uhring y queda:"<<endl<<endl;
- suma=0;
- for(int i=0; i<size; i++) {
- suma=suma+contar(epe[i]);
- }
- deltaT[0]=contar(Tsat[0])-contar(Tsat[size])-suma;
- f<<"\134begin{displaymath}"<<endl;
- f<<"\134begin{array}{lllll}"<<endl;
- for(int i=0; i<size; i++) {
- f<<"\134text{EPE}_{"<<i+1<<"}="<<contar(epe[i])<<"^{\134circ}\134text{F}&\134text{Le\134'ido a}&\134text{$x_{"<<i+1<<"}="<<contar(x[i+1]*100)<<"$\134%}&\134text{y}&\134text{$T_{S"<<i+1<<"}="<<contar(Tsat[i+1])<<"^{\134circ}\134text{F}$}\134\134"<<endl;
- }
- f<<"\134end{array}"<<endl;
- f<<"\134end{displaymath}"<<endl;
- f<<"\134begin{align*}"<<endl;
- f<<"\134Delta T_{\134text{Total}}&=T_{S1}-T_{S4}-\134left(";
- for(int i=0; i<size; i++) {
- f<<"\134text{EPE}_{"<<i+1<<"}";
- if(i<size-1) {
- f<<"+";
- } else {
- f<<"\134right)\134\134"<<endl;
- }
- }
- f<<"\134Delta T_{\134text{Total}}&="<<contar(Tsat[0])<<"^{\134circ}\134text{F}-"<<contar(Tsat[size])<<"^{\134circ}\134text{F}-\134left(";
- for(int i=0; i<size; i++) {
- f<<contar(epe[i])<<"^{\134circ}\134text{F}";
- if(i<size-1) {
- f<<"+";
- } else {
- f<<"\134right)\134\134"<<endl;
- }
- }
- f<<"\134Delta T_{\134text{Total}}&="<<contar(deltaT[0])<<"^{\134circ}\134text{F}"<<endl;
- f<<"\134end{align*}"<<endl;
- f<<"Se obtienen los $\134Delta T$ de cada efecto con el $\134Delta T_{\134text{Total}}$ y la ecuaci\134'on 8.5-6 del Geankoplis:"<<endl;
- for(int i=0; i<size; i++) {
- f<<"\134begin{align*}"<<endl;
- f<<"\134Delta T_{"<<i+1<<"}&=\134Delta T_{\134text{Total}}\134cdot \134frac{\134frac{1}{U_{"<<i+1<<"}}}{";
- for(int j=0; j<size; j++) {
- f<<"\134frac{1}{U_{"<<j+1<<"}}";
- if(j<size-1) {
- f<<"+";
- } else {
- f<<"}=";
- }
- }
- f<<contar(deltaT[0])<<"^{\134circ}\134text{F} \134cdot \134frac{\134frac{1}{"<<U[i]<<"}}{";
- for(int j=0; j<size; j++) {
- f<<"\134frac{1}{"<<U[j]<<"}";
- if(j<size-1) {
- f<<"+";
- } else {
- f<<"}=";
- }
- }
- suma=0;
- for(int j=0; j<size; j++) {
- suma=suma+1/U[j];
- }
- f<<contar(deltaT[0]*(1/U[i])/suma)<<"^{\134circ}\134text{F}\134\134";
- f<<"\134end{align*}"<<endl;
- }
- f<<"Se aumenta y disminuye proporcionalmente los $\134Delta T$ de cada efecto se obtiene:"<<endl;
- f<<"\134begin{align*}"<<endl;
- for(int i=0; i<size; i++) {
- f<<"\134Delta T_{"<<i+1<<"}&="<<contar(deltaT[0]*(1/U[i])/suma)<<"^{\134circ}\134text{F}";
- if(contar(deltaT[0]*(1/U[i])/suma)-deltaT[i+1]>0) {
- f<<"-";
- } else {
- f<<"+";
- }
- f<<contar(abs(contar(deltaT[0]*(1/U[i])/suma)-deltaT[i+1]))<<"^{\134circ}\134text{F}="<<contar(deltaT[i+1])<<"^{\134circ}\134text{F}";
- if(i<size-1) {
- f<<"\134\134"<<endl;
- } else {
- f<<endl;
- }
- }
- f<<"\134end{align*}"<<endl;
- f<<"Y ahora se recalcula las temperaturas de saturaci\134'on en cada efecto:"<<endl<<endl;
- f<<"\134begin{multicols}{2}"<<endl;
- f<<"\134noindent";
- for(int i=0; i<size; i++) {
- f<<"\134emph{Efecto "<<i+1<<":}"<<endl;
- f<<"\134begin{align*}"<<endl;
- if(i==0) {
- f<<"T_{"<<i+1<<"}&=T_{S"<<i+1<<"}-\134Delta T_{"<<i+1<<"}\134\134"<<endl;
- f<<"&="<<contar(Tsat[i])<<"^{\134circ}\134text{F}-"<<contar(deltaT[i+1])<<"^{\134circ}\134text{F}="<<contar(T[i+1])<<"^{\134circ}\134text{F}\134\134"<<endl;
- f<<"T_{S"<<i+1<<"}&="<<contar(Tsat[i])<<"^{\134circ}\134text{F}"<<endl;
- } else {
- f<<"T_{"<<i+1<<"}&=T_{"<<i<<"}-\134text{EPE}_{"<<i<<"}-\134Delta T_{"<<i+1<<"}\134\134"<<endl;
- f<<"&="<<contar(T[i])<<"^{\134circ}\134text{F}-"<<contar(epe[i-1])<<"^{\134circ}\134text{F}-"<<contar(deltaT[i+1])<<"^{\134circ}\134text{F}="<<contar(T[i+1])<<"^{\134circ}\134text{F}\134\134"<<endl;
- f<<"T_{S"<<i+1<<"}&=T_{"<<i<<"}-\134text{EPE}_{"<<i<<"}\134\134"<<endl;
- f<<"&="<<contar(T[i])<<"^{\134circ}\134text{F}-"<<contar(epe[i-1])<<"^{\134circ}\134text{F}="<<contar(Tsat[i])<<"^{\134circ}\134text{F}"<<endl;
- }
- f<<"\134end{align*}"<<endl;
- f<<"\134newline"<<endl;
- }
- f<<"\134end{multicols}"<<endl;
- f<<"Las temperaturas de los "<<size<<" efectos son las siguiente:"<<endl;
- f<<"\134begin{multicols*}{";
- if(size==3) {
- f<<"4";
- } else {
- f<<"2";
- }
- f<<"}"<<endl;
- for(int i=0; i<=size; i++) {
- f<<"\134begin{center}"<<endl;
- if(i<size) {
- f<<"\134emph{Efecto "<<i+1<<":}"<<endl;
- f<<"\134end{center}"<<endl;
- f<<"\134begin{align*}"<<endl;
- f<<"T_{S"<<i+1<<"}&="<<contar(Tsat[i])<<"^{\134circ}\134text{F}\134\134"<<endl;
- f<<"T_{"<<i+1<<"}&="<<contar(T[i+1])<<"^{\134circ}\134text{F}"<<endl;
- f<<"\134end{align*}"<<endl;
- } else {
- f<<"\134emph{Condensador:}"<<endl;
- f<<"\134end{center}"<<endl;
- f<<"\134begin{align*}"<<endl;
- f<<"T_{S"<<i+1<<"}&="<<contar(Tsat[i])<<"^{\134circ}\134text{F}"<<endl;
- f<<"\134end{align*}"<<endl;
- }
- }
- f<<"\134end{multicols*}"<<endl;
- f<<"\134item[Paso 4:] Se realiza un \134emph{balance de energ\134'ia} en cada efecto. Para eso se calculan las entalp\134'ias de cada corriente,tanto de los licores como los vapores:"<<endl;
- f<<"\134newline"<<endl;
- f<<"\134begin{center}"<<endl;
- f<<"\134textsc{\134textbf{Entalp\134'ias de los licores:}}"<<endl;
- f<<"\134end{center}"<<endl;
- f<<"Entalp\134'ias de los licores le\134'idos de la p\134'agina 530 del McCabe (Figura 16.6):"<<endl;
- f<<"\134begin{displaymath}"<<endl;
- f<<"\134begin{array}{lllllll}"<<endl;
- for(int i=0; i<=size; i++) {
- if(i==0) {
- f<<"H_{XF}="<<contar(hx[i])<<"\134tfrac{\134text{BTU}}{lb_m}&\134text{Alimentaci\134'on.}&\134text{Le\134'ido a}&\134text{$x_{F}="<<contar(x[i]*100)<<"$\134%}&\134text{y}&\134text{$T_{F}="<<contar(T[i])<<"^{\134circ} F$}\134\134"<<endl;
- } else {
- f<<"H_{X"<<i<<"}="<<contar(hx[i])<<"\134tfrac{\134text{BTU}}{lb_m}&\134text{Licor "<<i<<".}&\134text{Le\134'ido a}&\134text{$x_{"<<i<<"}="<<contar(x[i]*100)<<"$\134%}&\134text{y}&\134text{$T_{"<<i<<"}="<<contar(T[i])<<"^{\134circ} F$}\134\134"<<endl;
- }
- }
- f<<"\134end{array}"<<endl;
- f<<"\134end{displaymath}"<<endl;
- f<<"\134newline"<<endl;
- f<<"\134begin{center}"<<endl;
- f<<"\134textsc{\134textbf{Entalp\134'ias de los vapores:}}"<<endl;
- f<<"\134end{center}"<<endl;
- f<<"Las entalp\134'ias de los vapores de agua se toman con respecto a $32^{\134circ} F$ como base. Los $c_p$ y $\134lambda_S$ se calculan a la temperatura de saturaci\134'on. En las tablas de vapor se obtienen:\134newline"<<endl;
- for(int i=0; i<size; i++) {
- f<<"\134noindent \134emph{Efecto "<<i+1<<":}"<<endl;
- f<<"\134begin{align*}"<<endl;
- f<<"H_{"<<i+1<<"}&=h_{g \134left(T_{S"<<i+2<<"}\134right)}+c_p \134cdot EPE_{"<<i+1<<"}\134\134"<<endl;
- f<<"H_{"<<i+1<<"}&="<<contar(Hg(Tsat[i+1]))<<"\134tfrac{\134text{BTU}}{lb_m}+"<<contar(CP(Tsat[i+1]))<<"\134tfrac{\134text{BTU}}{lb_m \134cdot ^{\134circ} \134text{F}} \134cdot"<<contar(epe[i])<<"^{\134circ} F="<<contar(H[i])<<"\134tfrac{\134text{BTU}}{lb_m}"<<endl;
- f<<"\134end{align*}"<<endl;
- if(i==0) {
- f<<"\134begin{equation*}"<<endl;
- f<<"\134lambda_{S"<<i+1<<"}="<<contar(hvap[i])<<"\134tfrac{\134text{BTU}}{lb_m} \134quad\134text{Le\134'ido a\134quad $T_{S"<<i+1<<"}="<<contar(Tsat[i])<<"^{\134circ} F$}"<<endl;
- f<<"\134end{equation*}"<<endl;
- } else {
- f<<"\134begin{equation*}"<<endl;
- f<<"\134lambda_{S"<<i+1<<"}=h_{fg \134left(T_{S"<<i+1<<"}\134right)}+c_p \134cdot EPE_{"<<i+1<<"} \134quad\134text{Le\134'ido a\134quad $T_{S"<<i+1<<"}="<<contar(Tsat[i])<<"^{\134circ} F$}"<<endl;
- f<<"\134end{equation*}"<<endl;
- f<<"\134begin{equation*}"<<endl;
- f<<"\134lambda_{S"<<i+1<<"}="<<contar(Hvap(Tsat[i]))<<"\134tfrac{\134text{BTU}}{lb_m}+"<<contar(CP(Tsat[i]))<<"\134tfrac{\134text{BTU}}{lb_m \134cdot ^{\134circ} \134text{F}} \134cdot"<<contar(epe[i-1])<<"^{\134circ} F="<<contar(hvap[i])<<"\134tfrac{\134text{BTU}}{lb_m}"<<endl;
- f<<"\134end{equation*}"<<endl;
- }
- f<<"\134newline"<<endl;
- }
- f<<"\134newline"<<endl;
- f<<"\134begin{center}"<<endl;
- f<<"\134textsc{\134textbf{Balance de Energ\134'ia de cada efecto:}}"<<endl;
- f<<"\134end{center}"<<endl;
- f<<"Se realiza el \134emph{balance de energ\134'ia} en cada efecto,suponiendo que funcionan de forma \134emph{estacionaria}. Adem\134'as no hay calor por solvataci\134'on"<<endl;
- f<<"\134begin{align*}"<<endl;
- f<<"\134dot{E}_{entra}-\134dot{E}_{sale}&=\134Delta \134dot{E}_{sistema}=0\134\134"<<endl;
- f<<"\134dot{E}_{entra}-\134dot{E}_{sale}&=0\134\134"<<endl;
- f<<"\134dot{E}_{entra}&=\134dot{E}_{sale}"<<endl;
- f<<"\134end{align*}"<<endl;
- f<<"\134noindent Esta \134'ultima ecuaci\134'on nos servir\134'a para cada efecto.\134newline"<<endl;
- for(int i=0; i<size; i++) {
- f<<"\134begin{center}"<<endl;
- f<<"{\134color{Blue}\134hrule}"<<endl;
- f<<"\134textbf{Efecto "<<i+1<<":}"<<endl;
- f<<"\134end{center}"<<endl;
- f<<"\134begin{multicols}{2}"<<endl;
- f<<"\134begin{picture}(10,13)"<<endl;
- f<<"\134thicklines"<<endl;
- f<<"\134put(3.6,1.6){{\134color{Red}\134line(0,1){6.8}}}"<<endl;
- f<<"\134put(3.6,8.4){{\134color{Red}\134line(1,0){4.8}}}"<<endl;
- f<<"\134put(8.4,8.4){{\134color{Red}\134line(0,-1){6.8}}}"<<endl;
- f<<"\134put(3.6,1.6){{\134color{Red}\134line(1,0){4.8}}}"<<endl;
- f<<"\134thinlines"<<endl;
- f<<"\134put(0,4){\134vector(1,0){4}}"<<endl;
- f<<"\134put(0,7){\134vector(1,0){4}}"<<endl;
- f<<"\134put(6,10){\134vector(1,0){4}}"<<endl;
- f<<"\134put(6,2){\134vector(0,-1){2}}"<<endl;
- f<<"\134put(10,4){\134vector(0,-1){2}}"<<endl;
- f<<"\134put(4,4){\134line(0,1){4}}"<<endl;
- f<<"\134put(4,8){\134line(1,0){4}}"<<endl;
- f<<"\134put(8,8){\134line(0,-1){4}}"<<endl;
- f<<"\134put(4,4){\134line(1,-1){2}}"<<endl;
- f<<"\134put(6,2){\134line(1,1){2}}"<<endl;
- f<<"\134put(6,8){\134line(0,1){2}}"<<endl;
- f<<"\134put(8,4){\134line(1,0){2}}"<<endl;
- f<<"\134put(4,4){\134line(1,1){0.5}}"<<endl;
- f<<"\134put(5,4){\134line(1,1){0.5}}"<<endl;
- f<<"\134put(6,4){\134line(1,1){0.5}}"<<endl;
- f<<"\134put(7,4){\134line(1,1){0.5}}"<<endl;
- f<<"\134put(4.5,4.5){\134line(1,-1){0.5}}"<<endl;
- f<<"\134put(5.5,4.5){\134line(1,-1){0.5}}"<<endl;
- f<<"\134put(6.5,4.5){\134line(1,-1){0.5}}"<<endl;
- f<<"\134put(7.5,4.5){\134line(1,-1){0.5}}"<<endl;
- f<<"\134put(5.5,6){{("<<i+1<<")}}"<<endl;
- if(i+1==efecto[0]) {
- f<<"\134put(-2,8.3){{\134footnotesize $F="<<L[0]<<"\134tfrac{lb_m}{h}$}}"<<endl;
- f<<"\134put(-2,7.4){{\134footnotesize $H_{XF}="<<contar(hx[0])<<"\134tfrac{BTU}{lb_m}$}}"<<endl;
- f<<"\134put(6,11.4){{\134footnotesize $V_{"<<io[i+1][sale]<<"}=F-L_{"<<io[i+1][sale]<<"}$}}"<<endl;
- } else {
- f<<"\134put(-2,8.3){{\134footnotesize $L_{"<<io[i+1][entra]<<"}$}}"<<endl;
- f<<"\134put(-2,7.4){{\134footnotesize $H_{X"<<io[i+1][entra]<<"}="<<contar(hx[io[i+1][entra]])<<"\134tfrac{BTU}{lb_m}$}}"<<endl;
- f<<"\134put(6,11.4){{\134footnotesize $V_{"<<io[i+1][sale]<<"}=L_{"<<io[i+1][entra]<<"}-L_{"<<io[i+1][sale]<<"}$}}"<<endl;
- }
- if(i==0) {
- f<<"\134put(-2,3.2){{\134footnotesize $S$}}"<<endl;
- } else if(io[i][entra]==0) {
- f<<"\134put(-2,3.2){{\134footnotesize $V_{"<<io[i][sale]<<"}=F-L_{"<<io[i][sale]<<"}$}}"<<endl;
- } else {
- f<<"\134put(-2,3.2){{\134footnotesize $V_{"<<io[i][sale]<<"}=L_{"<<io[i][entra]<<"}-L_{"<<io[i][sale]<<"}$}}"<<endl;
- }
- f<<"\134put(-2,2.3){{\134footnotesize $\134lambda_{S"<<i+1<<"}="<<contar(hvap[i])<<"\134tfrac{BTU}{lb_m}$}}"<<endl;
- f<<"\134put(6.2,0.8){{\134footnotesize $L_{"<<io[i+1][sale]<<"}$}}"<<endl;
- f<<"\134put(6.2,0){{\134footnotesize $H_{X"<<io[i+1][sale]<<"}="<<contar(hx[io[i+1][sale]])<<"\134tfrac{BTU}{lb_m}$}}"<<endl;
- f<<"\134put(6,10.4){{\134footnotesize $H_{"<<io[i+1][sale]<<"}="<<contar(H[io[i+1][sale]-1])<<"\134tfrac{BTU}{lb_m}$}}"<<endl;
- f<<"\134end{picture}"<<endl;
- f<<"\134newline\134newline"<<endl;
- f<<"\134begin{align*}"<<endl;
- f<<"\134dot{E}_{entra}&=\134dot{E}_{sale}\134\134"<<endl;
- if(i+1==efecto[0]) {
- f<<"F \134cdot H_{XF}+";
- } else {
- f<<"L_{"<<io[i+1][entra]<<"} \134cdot H_{X"<<io[i+1][entra]<<"}+";
- }
- if(i==0) {
- f<<"S \134cdot ";
- } else {
- f<<"V_{"<<i<<"} \134cdot ";
- }
- f<<"\134lambda_{S"<<i+1<<"}&=L_{"<<io[i+1][sale]<<"} \134cdot H_{X"<<io[i+1][sale]<<"}+V_{"<<io[i+1][sale]<<"} \134cdot H_{"<<io[i+1][sale]<<"}"<<endl;
- f<<"\134end{align*}"<<endl;
- f<<"Como se conoce del \134emph{balance de materia} "<<endl;
- if(i>0) {
- f<<"\134begin{math}"<<endl;
- f<<"V_{"<<io[i][sale]<<"}=";
- if(io[i][entra]==0) {
- f<<"F-";
- } else {
- f<<"L_{"<<io[i][entra]<<"}-";
- }
- f<<"L_{"<<io[i][sale]<<"}";
- f<<"\134end{math}"<<endl;
- f<<" y ";
- }
- f<<"\134begin{math}"<<endl;
- if(i+1==efecto[0]) {
- f<<"V_{"<<io[i+1][sale]<<"}=F-L_{"<<io[i+1][sale]<<"}"<<endl;
- } else {
- f<<"V_{"<<io[i+1][sale]<<"}=L_{"<<io[i+1][entra]<<"}-L_{"<<io[i+1][sale]<<"}"<<endl;
- }
- f<<"\134end{math}"<<endl;
- if(i==0) {
- f<<". Se realiza un arreglo algebr\134'aico de modo que las inc\134'ognitas queden en el lado izquierdo de la igualdad y las constantes en el lado derecho,se sustituyen los valores de las entalp\134'ias:\134newline"<<endl;
- } else {
- f<<". Se repite al igual que el efecto 1:\134newline"<<endl;
- }
- f<<"\134end{multicols}"<<endl;
- f<<"\134begin{align*}"<<endl;
- if(i+1==efecto[0]) {
- f<<"F \134cdot H_{XF}+";
- } else {
- f<<"L_{"<<io[i+1][entra]<<"} \134cdot H_{X"<<io[i+1][entra]<<"}+";
- }
- if(i==0) {
- f<<"S \134cdot ";
- } else {
- if(i>0) {
- if(io[i][entra]==0) {
- f<<"\134left(F-";
- } else {
- f<<"\134left(L_{"<<io[i][entra]<<"}-";
- }
- f<<"L_{"<<io[i][sale]<<"}\134right) \134cdot";
- }
- }
- f<<"\134lambda_{S"<<i+1<<"}&=L_{"<<io[i+1][sale]<<"} \134cdot H_{X"<<io[i+1][sale]<<"}+";
- if(i+1==efecto[0]) {
- f<<"\134left(F-L_{"<<io[i+1][sale]<<"}\134right)";
- } else {
- f<<"\134left(L_{"<<io[i+1][entra]<<"}-L_{"<<io[i+1][sale]<<"}\134right)";
- }
- f<<"\134cdot H_{"<<io[i+1][sale]<<"}\134\134"<<endl;
- if(i+1==efecto[0]) {
- f<<"F \134cdot H_{XF}+";
- } else {
- f<<"L_{"<<io[i+1][entra]<<"} \134cdot H_{X"<<io[i+1][entra]<<"}+";
- }
- if(i==0) {
- f<<"S \134cdot \134lambda_{S"<<i+1<<"}";
- } else {
- if(i>0) {
- if(io[i][entra]==0) {
- f<<"F \134cdot \134lambda_{S"<<i+1<<"}-";
- } else {
- f<<"L_{"<<io[i][entra]<<"} \134cdot \134lambda_{S"<<i+1<<"}-";
- }
- f<<"L_{"<<io[i][sale]<<"}\134cdot \134lambda_{S"<<i+1<<"}";
- }
- }
- f<<"&=L_{"<<io[i+1][sale]<<"} \134cdot H_{X"<<io[i+1][sale]<<"}+";
- if(i+1==efecto[0]) {
- f<<"F\134cdot H_{"<<io[i+1][sale]<<"}-L_{"<<io[i+1][sale]<<"}\134cdot H_{"<<io[i+1][sale]<<"}\134\134"<<endl;
- } else {
- f<<"L_{"<<io[i+1][entra]<<"}\134cdot H_{"<<io[i+1][sale]<<"}-L_{"<<io[i+1][sale]<<"}\134cdot H_{"<<io[i+1][sale]<<"}\134\134"<<endl;
- }
- if(i+1==efecto[0]) {
- f<<"F \134cdot \134left("<<contar(hx[0])<<"\134right)+";
- } else {
- f<<"L_{"<<io[i+1][entra]<<"} \134cdot \134left("<<contar(hx[io[i+1][entra]])<<"\134right)+";
- }
- if(i==0) {
- f<<"S \134cdot \134left("<<contar(hvap[i])<<"\134right)";
- } else {
- if(i>0) {
- if(io[i][entra]==0) {
- f<<"F \134cdot \134left("<<contar(hvap[i])<<"\134right)-";
- } else {
- f<<"L_{"<<io[i][entra]<<"} \134cdot \134left("<<contar(hvap[i])<<"\134right)-";
- }
- f<<"L_{"<<io[i][sale]<<"}\134cdot \134left("<<contar(hvap[i])<<"\134right)";
- }
- }
- f<<"&=L_{"<<io[i+1][sale]<<"} \134cdot \134left("<<contar(hx[io[i+1][sale]])<<"\134right)+";
- if(i+1==efecto[0]) {
- f<<"F\134cdot \134left("<<contar(H[io[i+1][sale]-1])<<"\134right)-L_{"<<io[i+1][sale]<<"}\134cdot \134left("<<contar(H[io[i+1][sale]-1])<<"\134right)"<<endl;
- } else {
- f<<"L_{"<<io[i+1][entra]<<"}\134cdot \134left("<<contar(H[io[i+1][sale]-1])<<"\134right)"<<"-L_{"<<io[i+1][sale]<<"}\134cdot \134left("<<contar(H[io[i+1][sale]-1])<<"\134right)"<<endl;
- }
- f<<"\134end{align*}"<<endl;
- label++;
- f<<"\134begin{equation}"<<endl;
- f<<"\134label{eq"<<label<<"}"<<endl;
- unsigned short int c2,c3;
- c2=0;
- for(int j=0; j<size; j++) {
- if(M[i][j]!=0) {
- c2++;
- }
- }
- c3=c2;
- for(int j=0; j<size; j++) {
- if(M[i][j]!=0 and j!=0) {
- if(c3!=c2 and M[i][j]>0) {
- f<<"+";
- }
- f<<contar(M[i][j])<<"L_{"<<incognita[j-1]<<"}";
- c2--;
- }
- if(i==0 and j==0 and M[i][j]!=0) {
- f<<contar(M[i][j])<<"S";
- c2--;
- }
- }
- f<<"="<<setprecision(10)<<N[i][0];
- if(i<size-1) {
- f<<"\134\134"<<endl;
- }
- f<<"\134end{equation}"<<endl;
- }
- f<<"Se resuelven las ecuaciones ";
- for(int i=0; i<size; i++) {
- f<<"\134ref{eq"<<i+1<<"}";
- if(i<size-2) {
- f<<",";
- }
- if(i==size-2) {
- f<<" y ";
- }
- }
- f<<" utilizando cualquier m\134'etodo visto en \134'algebra lineal. Se resolver\134'a con \134emph{Regla de Cramer} para este caso:"<<endl;
- f<<"\134begin{displaymath}"<<endl;
- f<<"\134left\134{"<<endl;
- f<<"\134begin{array}{rcl}"<<endl;
- for(int i=0; i<size; i++) {
- unsigned short int c2,c3;
- c2=0;
- for(int j=0; j<size; j++) {
- if(M[i][j]!=0) {
- c2++;
- }
- }
- c3=c2;
- for(int j=0; j<size; j++) {
- if(M[i][j]!=0 and j!=0) {
- if(c3!=c2 and M[i][j]>0) {
- f<<"+";
- }
- f<<contar(M[i][j])<<"\134textcolor{OliveGreen}{L_{"<<incognita[j-1]<<"}}";
- c2--;
- }
- if(i==0 and j==0 and M[i][j]!=0) {
- f<<contar(M[i][j])<<"\134textcolor{OliveGreen}{S}";
- c2--;
- }
- }
- f<<"&=&"<<setprecision(10)<<N[i][0];
- if(i<size-1) {
- f<<"\134\134"<<endl;
- }
- }
- f<<"\134end{array}"<<endl;
- f<<"\134right."<<endl;
- f<<"\134end{displaymath}"<<endl;
- f<<"\134begin{displaymath}"<<endl;
- f<<"\134left["<<endl;
- f<<"\134begin{matrix}"<<endl;
- for(int i=0; i<size; i++) {
- for(int j=0; j<size; j++) {
- f<<"\134textcolor{black}{"<<contar(M[i][j])<<"}";
- if(j<size-1) {
- f<<"&";
- } else {
- f<<"\134\134"<<endl;
- }
- }
- }
- f<<"\134end{matrix}"<<endl;
- f<<"\134right]"<<endl;
- f<<"\134left["<<endl;
- f<<"\134begin{matrix}"<<endl;
- for(int i=0; i<size; i++) {
- if(i==0) {
- f<<"\134textcolor{OliveGreen}{S}";
- } else {
- f<<"\134textcolor{OliveGreen}{L_{"<<incognita[i-1]<<"}}";
- }
- if(i<size-1) {
- f<<"\134\134"<<endl;
- } else {
- f<<endl;
- }
- }
- f<<"\134end{matrix}"<<endl;
- f<<"\134right]"<<endl;
- f<<"=";
- f<<"\134left["<<endl;
- f<<"\134begin{matrix}"<<endl;
- for(int j=0; j<size; j++) {
- f<<"\134textcolor{Blue}{"<<N[j][0]<<"}";
- if(j<size-1) {
- f<<"\134\134"<<endl;
- }
- }
- f<<"\134end{matrix}"<<endl;
- f<<"\134right]"<<endl;
- f<<"\134end{displaymath}"<<endl;
- for(int k=0; k<size; k++) {
- f<<"\134begin{displaymath}"<<endl;
- for(int i=0; i<size; i++) {
- for(int j=0; j<size; j++) {
- m[i][j]=M[i][j];
- }
- }
- for(int i=0; i<=9; i++) {
- m[i][k]=N[i][0];
- }
- if(k==0) {
- f<<"S=\134frac{"<<endl;
- } else {
- f<<"L_{"<<incognita[k-1]<<"}=\134frac{"<<endl;
- }
- f<<"\134begin{vmatrix}"<<endl;
- for(int fila=0; fila<size; fila++) {
- for(int columna=0; columna<size; columna++) {
- if(columna==k) {
- f<<"\134textcolor{Blue}{";
- } else {
- f<<"\134textcolor{black}{";
- }
- f<<contar(m[fila][columna])<<"}";
- if(columna==size-1) {
- f<<"\134\134"<<endl;
- } else {
- f<<"&";
- }
- }
- }
- f<<"\134end{vmatrix}}{"<<endl;
- f<<"\134begin{vmatrix}"<<endl;
- for(int fila=0; fila<size; fila++) {
- for(int columna=0; columna<size; columna++) {
- f<<"\134textcolor{black}{";
- f<<contar(M[fila][columna])<<"}";
- if(columna==size-1) {
- f<<"\134\134"<<endl;
- } else {
- f<<"&";
- }
- }
- }
- f<<"\134end{vmatrix}}="<<endl;
- if(size<6) {
- f<<"\134frac{"<<setprecision(15)<<contar(determinante(m,size))<<"}{"<<contar(determinante(M,size))<<"}=";
- }
- f<<contar(determinante(m,size)/determinante(M,size))<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}"<<endl;
- f<<"\134end{displaymath}"<<endl;
- }
- f<<"Se observa que estos valores son id\134'enticos a los obtenidos con las concentraciones supuestas en el \134emph{Paso 1}. As\134'i que no se necesita iterar. De no ser id\134'enticos se repiten los pasos 1 al 4 hasta que converjan."<<endl;
- for(int i=0; i<size; i++) {
- f<<"\134begin{align*}"<<endl;
- if(i+1==efecto[0]) {
- f<<"V_{"<<io[i+1][sale]<<"}&=F-L_{"<<io[i+1][sale]<<"}\134\134"<<endl;
- } else {
- f<<"V_ {"<<io[i+1][sale]<<"}&=L_{"<<io[i+1][entra]<<"}-L_{"<<io[i+1][sale]<<"}\134\134"<<endl;
- }
- f<<"V_{"<<io[i+1][sale]<<"}&="<<contar(L[io[i+1][entra]])<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}-"<<contar(L[io[i+1][sale]])<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}\134\134"<<endl;
- f<<"V_{"<<io[i+1][sale]<<"}&="<<contar(V[io[i+1][sale]])<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}\134\134"<<endl;
- f<<"\134end{align*}"<<endl;
- }
- f<<"\134item[Paso 5:] Con los valores obtenidos en el \134emph{Paso 4} se encuentran los calores transferidos en cada efecto y el \134'area:\134newline"<<endl;
- f<<"\134begin{align*}"<<endl;
- for(int i=0; i<size; i++) {
- f<<"\134dot{Q}_{"<<i+1<<"}&=";
- if(i==0) {
- f<<"S";
- } else {
- f<<"V_{"<<i<<"}";
- }
- f<<"\134cdot \134lambda_{S"<<i+1<<"}=\134left("<<contar(V[i])<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}\134right)\134left("<<contar(hvap[i])<<"\134tfrac{\134text{BTU}}{lb_m}\134right)="<<contar(contar(hvap[i])*contar(V[i]))<<"\134tfrac{\134text{BTU}}{h}\134\134"<<endl;
- }
- suma=0;
- f<<"\134end{align*}"<<endl;
- f<<"\134begin{align*}"<<endl;
- for(int i=0; i<size; i++) {
- f<<"A_{"<<i+1<<"}&="<<"\134frac{\134dot{Q}_{"<<i+1<<"}}{U_{"<<i+1<<"}\134cdot \134Delta T_{"<<i+1<<"}}=\134frac{"<<contar(contar(hvap[i])*contar(V[i]))<<"\134frac{\134text{BTU}}{h}}{\134left("<<U[i]<<"\134tfrac{\134text{BTU}}{\134text{h}\134cdot \134text{ft}^2 \134cdot ^{\134circ}\134text{F}}\134right)\134left("<<contar(deltaT[i+1])<<"^{\134circ}\134text{F}\134right)}="<<contar(contar(contar(hvap[i])*contar(V[i]))/(contar(deltaT[i+1])*U[i]))<<"\176\134text{ft}^2\134\134"<<endl;
- suma=suma+contar(contar(contar(hvap[i])*contar(V[i]))/(contar(deltaT[i+1])*U[i]));
- }
- f<<"\134end{align*}"<<endl;
- f<<"El \134'area promedio $A_m="<<contar(suma/size)<<"\176\134text{ft}^2$. La variaci\134'on es despreciable y no hace falta otra iteraci\134'on. Sin embargo,los c\134'alculos se repiten desde el \134emph{Paso 6} para indicar los m\134'etodos de c\134'alculos utilizados.\134newline"<<endl;
- f<<"\134item[Paso 6:] Se repite el \134emph{Paso 1} (realizar un \134emph{balance de materia} en cada efecto) con los valores de los licores obtenidos en el \134emph{Paso 4}:"<<endl;
- deltaT[0]=0;
- for(int i=0; i<size; i++) {
- deltaT[0]=deltaT[0]+deltaT[i];
- }
- f<<"\134begin{multicols}{2}"<<endl;
- for(int i=0; i<size; i++) {
- f<<"\134emph{Efecto "<<i+1<<":}"<<endl;
- f<<"\134begin{align*}"<<endl;
- f<<"F \134cdot x_{F} &=L_{"<<i+1<<"} \134cdot x_{"<<i+1<<"}\134\134"<<endl;
- f<<"x_{"<<i+1<<"}&=\134frac{\134left("<<L[0]<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}\134right)\134left("<<x[0]<<"\134right)}{"<<contar(L[i+1])<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}}\134\134"<<endl;
- f<<"x_{"<<i+1<<"}&="<<contar(x[i+1]*1000)/1000<<endl;
- f<<"\134end{align*}"<<endl;
- }
- f<<"\134end{multicols}"<<endl;
- f<<"Se ve con toda claridad que las concentraciones obtenidas corresponden a las supuestas en el \134emph{Paso 1}.\134newline\134newline"<<endl;
- f<<"\134item[Paso 7:] Con los datos anteriores se calcula las nuevas temperaturas (ahora con la ecuaci\134'on 8.5-11 del Geankoplis) y los nuevos EPE's.\134newline"<<endl;
- f<<"\134begin{align*}"<<endl;
- suma=0;
- for(int i=0; i<size; i++) {
- f<<"\134Delta T^\134prime_{"<<i+1<<"}&=\134frac{\134Delta T_{"<<i+1<<"} \134cdot A_{"<<i+1<<"}}{A_m}=\134frac{\134left("<<contar(deltaT[i+1])<<"^{\134circ}\134text{F} \134right)\134left("<<contar(A[i+1])<<"\134text{ft}^2 \134right)}{"<<contar(A[0])<<"\134text{ft}^2}="<<contar(contar(deltaT[i+1])*contar(A[i+1])/contar(A[0]))<<"^{\134circ}\134text{F}\134\134"<<endl;
- suma=suma+contar(contar(deltaT[i+1])*contar(A[i+1])/contar(A[0]));
- }
- f<<"\134Delta T_{\134text{Total}}&=";
- for(int i=0; i<size; i++) {
- f<<contar(deltaT[i+1])<<"^{\134circ}\134text{F}";
- if(i<size-1) {
- f<<"+";
- }
- }
- f<<"="<<suma<<"^{\134circ}\134text{F}"<<endl;
- f<<"\134end{align*}"<<endl;
- f<<"Estos valores no var\134'ian con los obtenidos en el \134emph{Paso 3}. Ahora se calculan los nuevos EPE's:\134newline"<<endl;
- f<<"\134begin{displaymath}"<<endl;
- f<<"\134begin{array}{lllll}"<<endl;
- for(int i=0; i<size; i++) {
- f<<"\134text{EPE}_{"<<i+1<<"}="<<contar(epe[i])<<"^{\134circ}\134text{F}&\134text{Le\134'ido a}&\134text{$x_{"<<i+1<<"}="<<contar(x[i+1]*100)<<"$\134%}&\134text{y}&\134text{$T_{S"<<i+1<<"}="<<contar(Tsat[i+1])<<"^{\134circ}\134text{F}$}\134\134"<<endl;
- }
- f<<"\134end{array}"<<endl;
- f<<"\134end{displaymath}"<<endl;
- suma=0;
- for(int i=0; i<size; i++) {
- suma=suma+contar(epe[i]);
- }
- deltaT[0]=contar(Tsat[0])-contar(Tsat[size])-suma;
- f<<"\134begin{align*}"<<endl;
- f<<"\134Delta T_{\134text{Total}}&=T_{S1}-T_{S4}-\134left(";
- for(int i=0; i<size; i++) {
- f<<"\134text{EPE}_{"<<i+1<<"}";
- if(i<size-1) {
- f<<"+";
- } else {
- f<<"\134right)\134\134"<<endl;
- }
- }
- f<<"\134Delta T_{\134text{Total}}&="<<contar(Tsat[0])<<"^{\134circ}\134text{F}-"<<contar(Tsat[size])<<"^{\134circ}\134text{F}-\134left(";
- for(int i=0; i<size; i++) {
- f<<contar(epe[i])<<"^{\134circ}\134text{F}";
- if(i==size-1) {
- f<<"\134right)\134\134"<<endl;
- } else {
- f<<"+";
- }
- }
- f<<"\134Delta T_{\134text{Total}}&="<<contar(deltaT[0])<<"^{\134circ}\134text{F}"<<endl;
- f<<"\134end{align*}"<<endl;
- f<<"Este \134'ultimo $\134Delta T_{\134text{Total}}$ es muy cercano al obtenido con la ecuaci\134'on 8.5-11. Este es un indicio que en el \134emph{Paso 8} terminar\134'a la resoluci\134'on del problema.\134\134"<<endl;
- f<<"Ahora se recalcula las temperaturas de saturaci\134'on en cada efecto:"<<endl;
- f<<"\134begin{multicols}{2}"<<endl;
- f<<"\134noindent";
- for(int i=0; i<size; i++) {
- f<<"\134emph{Efecto "<<i+1<<":}"<<endl;
- f<<"\134begin{align*}"<<endl;
- if(i==0) {
- f<<"T_{"<<i+1<<"}&=T_{S"<<i+1<<"}-\134Delta T^\134prime_{"<<i+1<<"}\134\134"<<endl;
- f<<"&="<<contar(Tsat[i])<<"^{\134circ}\134text{F}-"<<contar(deltaT[i+1])<<"^{\134circ}\134text{F}="<<contar(T[i+1])<<"^{\134circ}\134text{F}\134\134"<<endl;
- f<<"T_{S"<<i+1<<"}&="<<contar(Tsat[i])<<"^{\134circ}\134text{F}"<<endl;
- } else {
- f<<"T_{"<<i+1<<"}&=T_{"<<i<<"}-\134text{EPE}_{"<<i<<"}-\134Delta T^\134prime_{"<<i+1<<"}\134\134"<<endl;
- f<<"&="<<contar(T[i])<<"^{\134circ}\134text{F}-"<<contar(epe[i-1])<<"^{\134circ}\134text{F}-"<<contar(deltaT[i+1])<<"^{\134circ}\134text{F}="<<contar(T[i+1])<<"^{\134circ}\134text{F}\134\134"<<endl;
- f<<"T_{S"<<i+1<<"}&=T_{"<<i<<"}-\134text{EPE}_{"<<i<<"}\134\134"<<endl;
- f<<"&="<<contar(T[i])<<"^{\134circ}\134text{F}-"<<contar(epe[i-1])<<"^{\134circ}\134text{F}="<<contar(Tsat[i])<<"^{\134circ}\134text{F}"<<endl;
- }
- f<<"\134end{align*}"<<endl;
- f<<"\134newline"<<endl;
- }
- f<<"\134end{multicols}"<<endl;
- f<<"\134item[Paso 8:] Se sigue con el \134emph{Paso 4} (c\134'alculos de las entalp\134'ias y el \134emph{balance de energ\134'ia} en cada efecto),y con el \134emph{Paso 5} (c\134'alculos de tasas calor y \134'areas):\134newline"<<endl;
- f<<"\134newline"<<endl;
- f<<"\134begin{center}"<<endl;
- f<<"\134textsc{\134textbf{Entalp\134'ias de los licores:}}"<<endl;
- f<<"\134end{center}"<<endl;
- f<<"Entalp\134'ias de los licores le\134'idos de la p\134'agina 530 del McCabe:"<<endl;
- f<<"\134begin{displaymath}"<<endl;
- f<<"\134begin{array}{lllllll}"<<endl;
- for(int i=0; i<=size; i++) {
- if(i==0) {
- f<<"H_{XF}="<<contar(hx[i])<<"\134tfrac{\134text{BTU}}{lb_m}&\134text{Alimentaci\134'on.}&\134text{Le\134'ido a}&\134text{$x_{F}="<<contar(x[i]*100)<<"$\134%}&\134text{y}&\134text{$T_{F}="<<contar(T[i])<<"^{\134circ}\134text{F}$}\134\134"<<endl;
- } else {
- f<<"H_{X"<<i<<"}="<<contar(hx[i])<<"\134tfrac{\134text{BTU}}{lb_m}&\134text{Licor "<<i<<".}&\134text{Le\134'ido a}&\134text{$x_{"<<i<<"}="<<contar(x[i]*100)<<"$\134%}&\134text{y}&\134text{$T_{"<<i<<"}="<<contar(T[i])<<"^{\134circ}\134text{F}$}\134\134"<<endl;
- }
- }
- f<<"\134end{array}"<<endl;
- f<<"\134end{displaymath}"<<endl;
- f<<"\134newline"<<endl;
- f<<"\134begin{center}"<<endl;
- f<<"\134textsc{\134textbf{Entalp\134'ias de los vapores:}}"<<endl;
- f<<"\134end{center}"<<endl;
- for(int i=0; i<size; i++) {
- f<<"\134noindent \134emph{Efecto "<<i+1<<":}"<<endl;
- f<<"\134begin{align*}"<<endl;
- f<<"H_{"<<i+1<<"}&=h_{g \134left(T_{S"<<i+2<<"}\134right)}+c_p \134cdot \134text{EPE}_{"<<i+1<<"}\134\134"<<endl;
- f<<"H_{"<<i+1<<"}&="<<contar(Hg(Tsat[i+1]))<<"\134tfrac{\134text{BTU}}{lb_m}+"<<contar(CP(Tsat[i+1]))<<"\134tfrac{\134text{BTU}}{lb_m \134cdot ^{\134circ} \134text{F}} \134cdot"<<contar(epe[i])<<"^{\134circ} F="<<contar(H[i])<<"\134tfrac{\134text{BTU}}{lb_m}"<<endl;
- f<<"\134end{align*}"<<endl;
- if(i==0) {
- f<<"\134begin{equation*}"<<endl;
- f<<"\134lambda_{S"<<i+1<<"}="<<contar(hvap[i])<<"\134tfrac{\134text{BTU}}{lb_m} \134quad\134text{Le\134'ido a\134quad $T_{S"<<i+1<<"}="<<contar(Tsat[i])<<"^{\134circ} F$}"<<endl;
- f<<"\134end{equation*}"<<endl;
- } else {
- f<<"\134begin{equation*}"<<endl;
- f<<"\134lambda_{S"<<i+1<<"}=h_{fg \134left(T_{S"<<i+1<<"}\134right)}+c_p \134cdot \134text{EPE}_{"<<i+1<<"} \134quad\134text{Le\134'ido a\134quad $T_{S"<<i+1<<"}="<<contar(Tsat[i])<<"^{\134circ} F$}"<<endl;
- f<<"\134end{equation*}"<<endl;
- f<<"\134begin{equation*}"<<endl;
- f<<"\134lambda_{S"<<i+1<<"}="<<contar(Hvap(Tsat[i]))<<"\134tfrac{\134text{BTU}}{lb_m}+"<<contar(CP(Tsat[i]))<<"\134tfrac{\134text{BTU}}{lb_m \134cdot ^{\134circ} \134text{F}} \134cdot"<<contar(epe[i-1])<<"^{\134circ} F="<<contar(hvap[i])<<"\134tfrac{\134text{BTU}}{lb_m}"<<endl;
- f<<"\134end{equation*}"<<endl;
- }
- f<<"\134newline"<<endl;
- }
- f<<"\134newline"<<endl;
- f<<"\134begin{center}"<<endl;
- f<<"\134textsc{\134textbf{Balance de Energ\134'ia de cada efecto:}}"<<endl;
- f<<"\134end{center}"<<endl;
- for(int i=0; i<size; i++) {
- f<<"\134begin{center}"<<endl;
- f<<"{\134color{Blue}\134hrule}"<<endl;
- f<<"\134textbf{Efecto "<<i+1<<":}"<<endl;
- f<<"\134end{center}"<<endl;
- f<<"\134begin{multicols}{2}"<<endl;
- f<<"\134begin{picture}(10,13)"<<endl;
- f<<"\134thicklines"<<endl;
- f<<"\134put(3.6,1.6){{\134color{Red}\134line(0,1){6.8}}}"<<endl;
- f<<"\134put(3.6,8.4){{\134color{Red}\134line(1,0){4.8}}}"<<endl;
- f<<"\134put(8.4,8.4){{\134color{Red}\134line(0,-1){6.8}}}"<<endl;
- f<<"\134put(3.6,1.6){{\134color{Red}\134line(1,0){4.8}}}"<<endl;
- f<<"\134thinlines"<<endl;
- f<<"\134put(0,4){\134vector(1,0){4}}"<<endl;
- f<<"\134put(0,7){\134vector(1,0){4}}"<<endl;
- f<<"\134put(6,10){\134vector(1,0){4}}"<<endl;
- f<<"\134put(6,2){\134vector(0,-1){2}}"<<endl;
- f<<"\134put(10,4){\134vector(0,-1){2}}"<<endl;
- f<<"\134put(4,4){\134line(0,1){4}}"<<endl;
- f<<"\134put(4,8){\134line(1,0){4}}"<<endl;
- f<<"\134put(8,8){\134line(0,-1){4}}"<<endl;
- f<<"\134put(4,4){\134line(1,-1){2}}"<<endl;
- f<<"\134put(6,2){\134line(1,1){2}}"<<endl;
- f<<"\134put(6,8){\134line(0,1){2}}"<<endl;
- f<<"\134put(8,4){\134line(1,0){2}}"<<endl;
- f<<"\134put(4,4){\134line(1,1){0.5}}"<<endl;
- f<<"\134put(5,4){\134line(1,1){0.5}}"<<endl;
- f<<"\134put(6,4){\134line(1,1){0.5}}"<<endl;
- f<<"\134put(7,4){\134line(1,1){0.5}}"<<endl;
- f<<"\134put(4.5,4.5){\134line(1,-1){0.5}}"<<endl;
- f<<"\134put(5.5,4.5){\134line(1,-1){0.5}}"<<endl;
- f<<"\134put(6.5,4.5){\134line(1,-1){0.5}}"<<endl;
- f<<"\134put(7.5,4.5){\134line(1,-1){0.5}}"<<endl;
- f<<"\134put(5.5,6){{("<<i+1<<")}}"<<endl;
- if(i+1==efecto[0]) {
- f<<"\134put(-2,8.3){{\134footnotesize $F="<<L[0]<<"\134tfrac{lb_m}{h}$}}"<<endl;
- f<<"\134put(-2,7.4){{\134footnotesize $H_{XF}="<<contar(hx[0])<<"\134tfrac{BTU}{lb_m}$}}"<<endl;
- f<<"\134put(6,11.4){{\134footnotesize $V_{"<<io[i+1][sale]<<"}=F-L_{"<<io[i+1][sale]<<"}$}}"<<endl;
- } else {
- f<<"\134put(-2,8.3){{\134footnotesize $L_{"<<io[i+1][entra]<<"}$}}"<<endl;
- f<<"\134put(-2,7.4){{\134footnotesize $H_{X"<<io[i+1][entra]<<"}="<<contar(hx[io[i+1][entra]])<<"\134tfrac{BTU}{lb_m}$}}"<<endl;
- f<<"\134put(6,11.4){{\134footnotesize $V_{"<<io[i+1][sale]<<"}=L_{"<<io[i+1][entra]<<"}-L_{"<<io[i+1][sale]<<"}$}}"<<endl;
- }
- if(i==0) {
- f<<"\134put(-2,3.2){{\134footnotesize $S$}}"<<endl;
- } else if(io[i][entra]==0) {
- f<<"\134put(-2,3.2){{\134footnotesize $V_{"<<io[i][sale]<<"}=F-L_{"<<io[i][sale]<<"}$}}"<<endl;
- } else {
- f<<"\134put(-2,3.2){{\134footnotesize $V_{"<<io[i][sale]<<"}=L_{"<<io[i][entra]<<"}-L_{"<<io[i][sale]<<"}$}}"<<endl;
- }
- f<<"\134put(-2,2.3){{\134footnotesize $\134lambda_{S"<<i+1<<"}="<<contar(hvap[i])<<"\134tfrac{BTU}{lb_m}$}}"<<endl;
- f<<"\134put(6.2,0.8){{\134footnotesize $L_{"<<io[i+1][sale]<<"}$}}"<<endl;
- f<<"\134put(6.2,0){{\134footnotesize $H_{X"<<io[i+1][sale]<<"}="<<contar(hx[io[i+1][sale]])<<"\134tfrac{BTU}{lb_m}$}}"<<endl;
- f<<"\134put(6,10.4){{\134footnotesize $H_{"<<io[i+1][sale]<<"}="<<contar(H[io[i+1][sale]-1])<<"\134tfrac{BTU}{lb_m}$}}"<<endl;
- f<<"\134end{picture}"<<endl;
- f<<"\134newline\134newline"<<endl;
- f<<"\134begin{align*}"<<endl;
- f<<"\134dot{E}_{entra}&=\134dot{E}_{sale}\134\134"<<endl;
- if(i+1==efecto[0]) {
- f<<"F \134cdot H_{XF}+";
- } else {
- f<<"L_{"<<io[i+1][entra]<<"} \134cdot H_{X"<<io[i+1][entra]<<"}+";
- }
- if(i==0) {
- f<<"S \134cdot ";
- } else {
- f<<"V_{"<<i<<"} \134cdot ";
- }
- f<<"\134lambda_{S"<<i+1<<"}&=L_{"<<io[i+1][sale]<<"} \134cdot H_{X"<<io[i+1][sale]<<"}+V_{"<<io[i+1][sale]<<"} \134cdot H_{"<<io[i+1][sale]<<"}"<<endl;
- f<<"\134end{align*}"<<endl;
- f<<"Como se conoce del \134emph{balance de materia} "<<endl;
- if(i>0) {
- f<<"\134begin{math}"<<endl;
- f<<"V_{"<<io[i][sale]<<"}=";
- if(io[i][entra]==0) {
- f<<"F-";
- } else {
- f<<"L_{"<<io[i][entra]<<"}-";
- }
- f<<"L_{"<<io[i][sale]<<"}";
- f<<"\134end{math}"<<endl;
- f<<" y ";
- }
- f<<"\134begin{math}"<<endl;
- if(i+1==efecto[0]) {
- f<<"V_{"<<io[i+1][sale]<<"}=F-L_{"<<io[i+1][sale]<<"}"<<endl;
- } else {
- f<<"V_{"<<io[i+1][sale]<<"}=L_{"<<io[i+1][entra]<<"}-L_{"<<io[i+1][sale]<<"}"<<endl;
- }
- f<<"\134end{math}"<<endl;
- if(i==0) {
- f<<". Se realiza un arreglo algebr\134'aico de modo que las inc\134'ognitas queden en el lado izquierdo de la igualdad y las constantes en el lado derecho,se sustituyen los valores de las entalp\134'ias:\134newline"<<endl;
- } else {
- f<<". Se repite al igual que el efecto 1:\134newline"<<endl;
- }
- f<<"\134end{multicols}"<<endl;
- f<<"\134begin{align*}"<<endl;
- if(i+1==efecto[0]) {
- f<<"F \134cdot H_{XF}+";
- } else {
- f<<"L_{"<<io[i+1][entra]<<"} \134cdot H_{X"<<io[i+1][entra]<<"}+";
- }
- if(i==0) {
- f<<"S \134cdot ";
- } else {
- if(i>0) {
- if(io[i][entra]==0) {
- f<<"\134left(F-";
- } else {
- f<<"\134left(L_{"<<io[i][entra]<<"}-";
- }
- f<<"L_{"<<io[i][sale]<<"}\134right) \134cdot";
- }
- }
- f<<"\134lambda_{S"<<i+1<<"}&=L_{"<<io[i+1][sale]<<"} \134cdot H_{X"<<io[i+1][sale]<<"}+";
- if(i+1==efecto[0]) {
- f<<"\134left(F-L_{"<<io[i+1][sale]<<"}\134right)";
- } else {
- f<<"\134left(L_{"<<io[i+1][entra]<<"}-L_{"<<io[i+1][sale]<<"}\134right)";
- }
- f<<"\134cdot H_{"<<io[i+1][sale]<<"}\134\134"<<endl;
- if(i+1==efecto[0]) {
- f<<"F \134cdot H_{XF}+";
- } else {
- f<<"L_{"<<io[i+1][entra]<<"} \134cdot H_{X"<<io[i+1][entra]<<"}+";
- }
- if(i==0) {
- f<<"S \134cdot \134lambda_{S"<<i+1<<"}";
- } else {
- if(i>0) {
- if(io[i][entra]==0) {
- f<<"F \134cdot \134lambda_{S"<<i+1<<"}-";
- } else {
- f<<"L_{"<<io[i][entra]<<"} \134cdot \134lambda_{S"<<i+1<<"}-";
- }
- f<<"L_{"<<io[i][sale]<<"}\134cdot \134lambda_{S"<<i+1<<"}";
- }
- }
- f<<"&=L_{"<<io[i+1][sale]<<"} \134cdot H_{X"<<io[i+1][sale]<<"}+";
- if(i+1==efecto[0]) {
- f<<"F\134cdot H_{"<<io[i+1][sale]<<"}-L_{"<<io[i+1][sale]<<"}\134cdot H_{"<<io[i+1][sale]<<"}\134\134"<<endl;
- } else {
- f<<"L_{"<<io[i+1][entra]<<"}\134cdot H_{"<<io[i+1][sale]<<"}-L_{"<<io[i+1][sale]<<"}\134cdot H_{"<<io[i+1][sale]<<"}\134\134"<<endl;
- }
- if(i+1==efecto[0]) {
- f<<"F \134cdot \134left("<<contar(hx[0])<<"\134right)+";
- } else {
- f<<"L_{"<<io[i+1][entra]<<"} \134cdot \134left("<<contar(hx[io[i+1][entra]])<<"\134right)+";
- }
- if(i==0) {
- f<<"S \134cdot \134left("<<contar(hvap[i])<<"\134right)";
- } else {
- if(i>0) {
- if(io[i][entra]==0) {
- f<<"F \134cdot \134left("<<contar(hvap[i])<<"\134right)-";
- } else {
- f<<"L_{"<<io[i][entra]<<"} \134cdot \134left("<<contar(hvap[i])<<"\134right)-";
- }
- f<<"L_{"<<io[i][sale]<<"}\134cdot \134left("<<contar(hvap[i])<<"\134right)";
- }
- }
- f<<"&=L_{"<<io[i+1][sale]<<"} \134cdot \134left("<<contar(hx[io[i+1][sale]])<<"\134right)+";
- if(i+1==efecto[0]) {
- f<<"F\134cdot \134left("<<contar(H[io[i+1][sale]-1])<<"\134right)-L_{"<<io[i+1][sale]<<"}\134cdot \134left("<<contar(H[io[i+1][sale]-1])<<"\134right)"<<endl;
- } else {
- f<<"L_{"<<io[i+1][entra]<<"}\134cdot \134left("<<contar(H[io[i+1][sale]-1])<<"\134right)"<<"-L_{"<<io[i+1][sale]<<"}\134cdot \134left("<<contar(H[io[i+1][sale]-1])<<"\134right)"<<endl;
- }
- f<<"\134end{align*}"<<endl;
- label++;
- f<<"\134begin{equation}"<<endl;
- f<<"\134label{eq"<<label<<"}"<<endl;
- unsigned short int c2,c3;
- c2=0;
- for(int j=0; j<size; j++) {
- if(M[i][j]!=0) {
- c2++;
- }
- }
- c3=c2;
- for(int j=0; j<size; j++) {
- if(M[i][j]!=0 and j!=0) {
- if(c3!=c2 and M[i][j]>0) {
- f<<"+";
- }
- f<<contar(M[i][j])<<"L_{"<<incognita[j-1]<<"}";
- c2--;
- }
- if(i==0 and j==0 and M[i][j]!=0) {
- f<<contar(M[i][j])<<"S";
- c2--;
- }
- }
- f<<"="<<setprecision(10)<<N[i][0];
- if(i<size-1) {
- f<<"\134\134"<<endl;
- }
- f<<"\134end{equation}"<<endl;
- }
- f<<"Se resuelven las ecuaciones ";
- for(int i=0; i<size; i++) {
- f<<"\134ref{eq"<<i+size+1<<"}";
- if(i<size-2) {
- f<<",";
- }
- if(i==size-2) {
- f<<" y ";
- }
- }
- f<<"."<<endl;
- f<<"\134begin{displaymath}"<<endl;
- f<<"\134left\134{"<<endl;
- f<<"\134begin{array}{rcl}"<<endl;
- for(int i=0; i<size; i++) {
- unsigned short int c2,c3;
- c2=0;
- for(int j=0; j<size; j++) {
- if(M[i][j]!=0) {
- c2++;
- }
- }
- c3=c2;
- for(int j=0; j<size; j++) {
- if(M[i][j]!=0 and j!=0) {
- if(c3!=c2 and M[i][j]>0) {
- f<<"+";
- }
- f<<contar(M[i][j])<<"\134textcolor{OliveGreen}{L_{"<<incognita[j-1]<<"}}";
- c2--;
- }
- if(i==0 and j==0 and M[i][j]!=0) {
- f<<contar(M[i][j])<<"\134textcolor{OliveGreen}{S}";
- c2--;
- }
- }
- f<<"&=&"<<setprecision(10)<<N[i][0];
- if(i<size-1) {
- f<<"\134\134"<<endl;
- }
- }
- f<<"\134end{array}"<<endl;
- f<<"\134right."<<endl;
- f<<"\134end{displaymath}"<<endl;
- f<<"\134begin{displaymath}"<<endl;
- f<<"\134left["<<endl;
- f<<"\134begin{matrix}"<<endl;
- for(int i=0; i<size; i++) {
- for(int j=0; j<size; j++) {
- f<<"\134textcolor{black}{"<<contar(M[i][j])<<"}";
- if(j<size-1) {
- f<<"&";
- } else {
- f<<"\134\134"<<endl;
- }
- }
- }
- f<<"\134end{matrix}"<<endl;
- f<<"\134right]"<<endl;
- f<<"\134left["<<endl;
- f<<"\134begin{matrix}"<<endl;
- for(int i=0; i<size; i++) {
- if(i==0) {
- f<<"\134textcolor{OliveGreen}{S}";
- } else {
- f<<"\134textcolor{OliveGreen}{L_{"<<incognita[i-1]<<"}}";
- }
- if(i<size-1) {
- f<<"\134\134"<<endl;
- } else {
- f<<endl;
- }
- }
- f<<"\134end{matrix}"<<endl;
- f<<"\134right]"<<endl;
- f<<"=";
- f<<"\134left["<<endl;
- f<<"\134begin{matrix}"<<endl;
- for(int j=0; j<size; j++) {
- f<<"\134textcolor{Blue}{"<<N[j][0]<<"}";
- if(j<size-1) {
- f<<"\134\134"<<endl;
- }
- }
- f<<"\134end{matrix}"<<endl;
- f<<"\134right]"<<endl;
- f<<"\134end{displaymath}"<<endl;
- for(int k=0; k<size; k++) {
- f<<"\134begin{displaymath}"<<endl;
- for(int i=0; i<size; i++) {
- for(int j=0; j<size; j++) {
- m[i][j]=M[i][j];
- }
- }
- for(int i=0; i<=9; i++) {
- m[i][k]=N[i][0];
- }
- if(k==0) {
- f<<"S=\134frac{"<<endl;
- } else {
- f<<"L_{"<<incognita[k-1]<<"}=\134frac{"<<endl;
- }
- f<<"\134begin{vmatrix}"<<endl;
- for(int fila=0; fila<size; fila++) {
- for(int columna=0; columna<size; columna++) {
- if(columna==k) {
- f<<"\134textcolor{Blue}{";
- } else {
- f<<"\134textcolor{black}{";
- }
- f<<contar(m[fila][columna])<<"}";
- if(columna==size-1) {
- f<<"\134\134"<<endl;
- } else {
- f<<"&";
- }
- }
- }
- f<<"\134end{vmatrix}}{"<<endl;
- f<<"\134begin{vmatrix}"<<endl;
- for(int fila=0; fila<size; fila++) {
- for(int columna=0; columna<size; columna++) {
- f<<"\134textcolor{black}{";
- f<<contar(M[fila][columna])<<"}";
- if(columna==size-1) {
- f<<"\134\134"<<endl;
- } else {
- f<<"&";
- }
- }
- }
- f<<"\134end{vmatrix}}="<<endl;
- if(size<6) {
- f<<"\134frac{"<<setprecision(15)<<contar(determinante(m,size))<<"}{"<<contar(determinante(M,size))<<"}=";
- }
- f<<contar(determinante(m,size)/determinante(M,size))<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}"<<endl;
- f<<"\134end{displaymath}"<<endl;
- }
- for(int i=0; i<size; i++) {
- f<<"\134begin{align*}"<<endl;
- if(i+1==efecto[0]) {
- f<<"V_{"<<io[i+1][sale]<<"}&=F-L_{"<<io[i+1][sale]<<"}\134\134"<<endl;
- } else {
- f<<"V_ {"<<io[i+1][sale]<<"}&=L_{"<<io[i+1][entra]<<"}-L_{"<<io[i+1][sale]<<"}\134\134"<<endl;
- }
- f<<"V_{"<<io[i+1][sale]<<"}&="<<contar(L[io[i+1][entra]])<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}-"<<contar(L[io[i+1][sale]])<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}\134\134"<<endl;
- f<<"V_{"<<io[i+1][sale]<<"}&="<<contar(V[io[i+1][sale]])<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}\134\134"<<endl;
- f<<"\134end{align*}"<<endl;
- }
- f<<"\134begin{align*}"<<endl;
- for(int i=0; i<size; i++) {
- f<<"\134dot{Q}_{"<<i+1<<"}&=";
- if(i==0) {
- f<<"S";
- } else {
- f<<"V_{"<<i<<"}";
- }
- f<<"\134cdot \134lambda_{S"<<i+1<<"}=\134left("<<contar(V[i])<<"\134tfrac{\134text{lb}_\134text{m}}{\134text{h}}\134right)\134left("<<contar(hvap[i])<<"\134tfrac{\134text{BTU}}{\134text{lb}_\134text{m}}\134right)="<<contar(contar(hvap[i])*contar(V[i]))<<"\176\134tfrac{\134text{BTU}}{h}\134\134"<<endl;
- }
- suma=0;
- f<<"\134end{align*}"<<endl;
- f<<"\134begin{align*}"<<endl;
- for(int i=0; i<size; i++) {
- f<<"A_{"<<i+1<<"}&="<<"\134frac{\134dot{Q}_{"<<i+1<<"}}{U_{"<<i+1<<"}\134cdot \134Delta T_{"<<i+1<<"}}=\134frac{"<<contar(contar(hvap[i])*contar(V[i]))<<"\134frac{\134text{BTU}}{\134text{h}}}{\134left("<<U[i]<<"\134tfrac{\134text{BTU}}{\134text{h}\134cdot \134text{ft}^2 \134cdot ^{\134circ}\134text{F}}\134right)\134left("<<contar(deltaT[i+1])<<"^{\134circ}\134text{F}\134right)}="<<contar(contar(contar(hvap[i])*contar(V[i]))/(contar(deltaT[i+1])*U[i]))<<"\176\134text{ft}^2\134\134"<<endl;
- suma=suma+contar(contar(contar(hvap[i])*contar(V[i]))/(contar(deltaT[i+1])*U[i]));
- }
- f<<"\134end{align*}"<<endl;
- f<<"El \134'area promedio $A_m="<<contar(suma/size)<<"\176\134text{ft}^2$. La variaci\134'on es despreciable y no hace falta otra iteraci\134'on. De no ser iguales se debe repetir los pasos 6,7 y 8 hasta que converjan las respuestas.\134newline\134newline"<<endl;
- f<<"\134begin{Large}"<<endl;
- f<<"\134textbf{Respuestas:}"<<endl;
- f<<"\134end{Large}"<<endl;
- f<<"\134begin{parts}"<<endl;
- f<<"\134part $A_m="<<contar(A[0])<<"\176\134text{ft}^2$"<<endl;
- f<<"\134part $S="<<contar(V[0])<<"\176\134frac{\134text{lb}_{m}}{\134text{h}}$"<<endl;
- f<<"\134part $\134text{Econom\134'ia del vapor}=\134frac{";
- for(int i=0; i<size; i++) {
- f<<"V_{"<<i+1<<"}";
- if(i==size-1) {
- f<<"}";
- } else {
- f<<"+";
- }
- }
- f<<"{S}=\134frac{";
- suma=0;
- for(int i=0; i<size; i++) {
- f<<contar(V[i+1]);
- suma=suma+contar(V[i+1]);
- if(i==size-1) {
- f<<"}";
- } else {
- f<<"+";
- }
- }
- f<<"{"<<contar(V[0])<<"}="<<contar(contar(suma)/contar(V[0])*1000)/1000<<"$"<<endl;
- f<<"\134end{parts}"<<endl;
- f<<"\134end{description}"<<endl;
- f<<"\134end{solution}"<<endl;
- f<<"\134end{document}";
- f.close();
- }
- /*funciones auxiliares*/
- bool ingresar_orden_efectos() {
- cout<<"Ingrese el orden de los efectos (por ejemplo 312, 132, 123 para 3 efectos): ";
- cin >> opcion;
- if (!orden_efectos(opcion)) {
- cout<<"ERROR: el orden ingresado no es v\240lido."<<endl;
- return false;
- }
- return true;
- }
- bool validar_alimentacion() {
- cout<<"Ingrese el flujo m\240sico [lb/h]: ";
- cin >> L[0];
- if (L[0] <=0) {
- cout<<"ERROR: El flujo m\240sico debe ser mayor a 0."<<endl;
- return false;
- }
- return true;
- }
- bool validar_temperatura() {
- cout<<"Ingrese temperatura de alimentacion [F]: ";
- cin >> T[0];
- if (T[0]<40 || T[0] > 400) {
- cout<<"ERROR: La temperatura debe estar entre 40 y 400 Fahrenheit."<<endl;
- return false;
- }
- return true;
- }
- bool validar_concentraciones() {
- cout<<"Ingrese concentracion (fraccion en peso): x[0]=";
- cin >> x[0];
- cout<<"Ingrese concentracion (fraccion en peso): x["<<efecto[size-1]<<"]=";
- cin >> x[efecto[size-1]];
- if (x[0]<=0 || x[efecto[size-1]]<=0 || x[0]>=1 || x[efecto[size-1]] > 1 || x[0]>=x[efecto[size-1]]) {
- cout<<"ERROR: Las concentraciones deben estar entre 0 y 1,y x[0]<x[efecto[size-1]]."<<endl;
- return false;
- }
- return true;
- }
- bool validar_presiones() {
- cout<<"Ingrese presion del vapor vivo [psia]: P[0]=";
- cin >> P[0];
- cout<<"Ingrese presion ultimo efecto [psia]: P["<<size<<"]=";
- cin >> P[size];
- if (P[0]<0.1 || P[size]<0.1 || P[0] > 3198 || P[size] > 3198 || P[0] <=P[size]) {
- cout<<"ERROR: Las presiones deben ser mayores a 0.1 psia y menores a 3198 psia,y P[0] > P[size]."<<endl;
- return false;
- }
- return true;
- }
- bool validar_coeficientes() {
- cout<<"Ingrese los coeficientes globales de transferencia de calor [BTU/(h*ft*F)]: "<<endl;
- for (int i=0; i<size; i++) {
- cout<<"U["<<i+1<<"]=";
- cin>>U[i];
- if (U[i]<200 || U[i]>1000) {
- cout<<"ERROR: Los coeficientes deben estar entre 200 y 1000."<<endl;
- return false;
- }
- }
- return true;
- }
- void imprimir_datos() {
- cout<<"\n*********************************************"<<endl;
- cout<<"Alimentacion [lbm/h]: "<<L[0]<<endl;
- cout<<"Temperatura de alimentacion [F]: "<<T[0]<<endl;
- cout<<"Concentracion en peso: "<<x[0]<<endl;
- cout<<"Concentracion en peso: "<<x[efecto[size-1]]<<endl;
- cout<<"Presion del vapor vivo [psia]: "<<P[0]<<endl;
- cout<<"Presion del efecto "<<size<<" [psia]: "<<P[size]<<endl;
- cout<<"Coeficientes globales de transferencia de calor [BTU/(h*)]: "<<endl;
- for (int i=0; i<size; i++) {
- cout<<"U["<<i+1<<"]="<<U[i]<<endl;
- }
- cout<<"*********************************************"<<endl;
- }
- void generar_datos_aleatorios() {
- srand(time(0));
- int intentos=0;
- bool continuar=true;
- cout<<"Generacion de datos aleatorios para "<<size<<" efectos..."<<endl;
- do {
- intentos++;
- cout<<"Intento "<<intentos<<endl;
- // Generar coeficientes de transferencia de calor U[i] entre 450 y 1500
- for (int i=0; i<size; i++) {
- U[i]=400+rand()%(1000-400+1);
- }
- L[0]=5000+rand() % (250000-5000+1);// Entre 5,000 y 250,000 lb/h
- // Generar concentraciones x[0] y x[efecto[size-1]] (0<x[0]<x[efecto[size-1]]<1)
- do {
- x[0]=(rand() % 50+1) / 100.0;// Entre 0.01 y 0.5
- x[efecto[size-1]]=x[0]+(rand() % 50+1) / 100.0;// Entre x[0] y x[0]+0.5
- } while (x[efecto[size-1]] >=0.75);
- T[0]=40+rand()%(400-40+1);
- // Generar presiones P[0] y P[size] (0.1<P[size]<P[0]<3198)
- double c=(rand()%200)/10.0;// Generar un valor base para las presiones
- P[size]=0.1+c+(rand()%50)/10.0;// Entre 0.1 y c+5
- P[0]=P[size]+(rand()%3198)/10.0;// Entre P[size] y 3198
- if (resolver()) {
- escribir();
- continuar=false;
- }
- // Verificar si se alcanzaron 20 intentos
- if (intentos==20) {
- int respuesta;
- cout<<"\250Desea continuar? (1) S\241,(2) No: ";
- cin>>respuesta;
- if (respuesta!=1) {
- continuar=false;
- }
- intentos=0;// Reiniciar intentos
- }
- } while (continuar);
- cout<<"FINALIZADO"<<endl;
- }
- double Hvap(double T) {
- if (T<temperaturas.front()||T>temperaturas.back()) {
- throw std::out_of_range("La temperatura esta fuera del rango soportado.");
- }
- for (size_t i=0; i<temperaturas.size()-1; ++i) {
- if (T>=temperaturas[i] && T<=temperaturas[i+1]) {
- double t1=temperaturas[i];
- double t2=temperaturas[i+1];
- double h1=entalpia_vaporizacion[i];
- double h2=entalpia_vaporizacion[i+1];
- return h1+(T-t1)*(h2-h1)/(t2-t1);
- }
- }
- throw std::runtime_error("Error inesperado en la interpolacion.");
- }
- double T_sat(double P) {
- if (P<presion_vapor.front() || P>presion_vapor.back()) {
- throw std::out_of_range("La presion fuera del rango soportado.");
- }
- for (size_t i=0; i<presion_vapor.size()-1; ++i) {
- if (P >=presion_vapor[i] && P<=presion_vapor[i+1]) {
- double P1=presion_vapor[i];
- double P2=presion_vapor[i+1];
- double T1=temperaturas[i];
- double T2=temperaturas[i+1];
- return T1+(P-P1)*(T2-T1)/(P2-P1);
- }
- }
- throw std::runtime_error("Error inesperado en T_sat.");
- }
- double P_sat(double T) {
- if (T<temperaturas.front() || T > temperaturas.back()) {
- throw std::out_of_range("La temperatura esta fuera del rango soportado.");
- }
- for (size_t i=0; i<temperaturas.size()-1; ++i) {
- if (T >=temperaturas[i] && T <=temperaturas[i+1]) {
- double T1=temperaturas[i];
- double T2=temperaturas[i+1];
- double P1=presion_vapor[i];
- double P2=presion_vapor[i+1];
- return P1+(T-T1)*(P2-P1)/(T2-T1);
- }
- }
- throw std::runtime_error("Error inesperado en P_sat.");
- }
- double Hg(double T) {
- if (T<temperaturas.front()||T>temperaturas.back()) {
- throw std::out_of_range("La temperatura esta fuera del rango soportado.");
- }
- for (size_t i=0; i<temperaturas.size()-1; ++i) {
- if (T>=temperaturas[i] && T<=temperaturas[i+1]) {
- double T1=temperaturas[i];
- double T2=temperaturas[i+1];
- double H1=entalpia_vapor_saturado[i];
- double H2=entalpia_vapor_saturado[i+1];
- return H1+(T-T1)*(H2-H1)/(T2-T1);
- }
- }
- throw std::runtime_error("Error inesperado en Hg.");
- }
- struct EvaporadorFunctor {
- const int size;
- const std::vector<std::vector<double>>& M;
- const std::vector<std::vector<double>>& N;
- EvaporadorFunctor(int sz, const std::vector<std::vector<double>>& m,
- const std::vector<std::vector<double>>& n)
- : size(sz), M(m), N(n) {}
- template <typename T>
- bool operator()(const T* const x, T* residuals) const {
- // Variables: Tsat[1..size-1]+L[0..size-1]
- const T* Tsat=x; // x[0] .. x[size-2] son Tsat[1] .. Tsat[size-1]
- const T* L=x+(size-1); // x[size-1] .. x[2*size-2] son L[0] .. L[size-1]
- for (int i=0; i<size; ++i) {
- T eq=T(0);
- for (int j=0; j<size+1; ++j) {
- T coef=T(M[i][j]);
- if (j == 0) {
- eq += coef; // V[0]=constante, asumimos 1
- } else {
- int idx=j-1;
- if (idx >= 0 && idx<size)
- eq += coef * L[idx];
- }
- }
- eq -= T(N[i][0]);
- residuals[i]=eq;
- }
- return true;
- }
- };
- void resolver2() {
- using ceres::AutoDiffCostFunction;
- using ceres::Problem;
- using ceres::Solver;
- using ceres::Solve;
- const int num_Tsat_vars=size-1;
- const int num_L_vars=size;
- const int num_vars=num_Tsat_vars+num_L_vars;
- // Vector de variables: [Tsat[1..size-1], L[0..size-1]]
- std::vector<double> x(num_vars);
- for (int i=1; i<size; ++i) x[i-1]=Tsat[i];
- for (int i=0; i<size; ++i) x[num_Tsat_vars+i]=L[i];
- // Crear problema de optimización
- Problem problem;
- EvaporadorFunctor* functor=new EvaporadorFunctor(size, M, N);
- problem.AddResidualBlock(
- new AutoDiffCostFunction<EvaporadorFunctor, ceres::DYNAMIC, ceres::DYNAMIC>(
- functor, size, num_vars),
- nullptr,
- x.data()
- );
- // Opciones del solver
- Solver::Options options;
- options.linear_solver_type=ceres::DENSE_QR;
- options.minimizer_progress_to_stdout=true;
- options.max_num_iterations=1000;
- options.function_tolerance=1e-10;
- options.gradient_tolerance=1e-10;
- options.parameter_tolerance=1e-10;
- // Ejecutar solver
- Solver::Summary summary;
- Solve(options, &problem, &summary);
- std::cout<<summary.FullReport()<<"\n";
- // Actualizar Tsat y L con resultados
- for (int i=1; i<size; ++i) Tsat[i]=x[i-1];
- for (int i=0; i<size; ++i) L[i]=x[num_Tsat_vars+i];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement