二氧化硫转化率最优化王晓冰.doc
二氧化硫转化率最优化SO21/2O2=SO3,四段绝热反响器,级间间接换热。1.根底数据:混合物恒压热容Cp 0.2549 kcal/kgKH =23135 kcal/kmol催化剂堆密度b554 kg/m3进口SO2浓度8.0%,O2浓度9.0%,其余为氮气处理量131 kmol SO2/hr,要求最终转化率98 2.动力学方程:式中:3.根本要求:(1)在TX图上,做出平衡线,至少4条等速率线;(2)以一维拟均相平推流模型为根底,在催化剂用量最少的前提下,总的与各段的催化剂装量;进出口温度、转化率;并在T-X图上标出折线;4.讨论:(1)要求的最终转化率从98变化到99对催化剂用量的影响;(2)YO2YSO221,SO2进口浓度在79之间变化,对催化剂装量的影响。计算过程:编写c+程序,如下:#include<math.h>#include<stdio.h>01double r(double x, double t, double xso2)double r,r1,r2,r3, B,keff,K, Kp,Pso2,Pso3,Po2; if(t>=693.15 && t<748.15)keff = 7.6915*pow(10,18)*exp(-76062 / (R*t); if(t>=748.15 && t<=873.15) keff = 1.5128*pow(10,7)*exp(-35992 / (R*t); K = 2.3*pow(10,-8)*exp(27200/(R*t); Kp=2.26203*pow(10,-5)*exp(11295.3 / t); Pso2=(xso2-xso2*x) / (1-xso2*x/2); Pso3=xso2*x / (1-xso2*x/2); Po2=(0.17-xso2-xso2*x/2) / (1-xso2*x/2); r1 =Po2*Pso2/Pso3; r2 =Pso3/(Pso2*sqrt(Po2)*Kp); B =48148*exp(-7355.5/t); r3 =sqrt(B+(B-1)*(1-x)/x)+sqrt(K*(1-x)/x); r =keff*K*r1*(1-r2*r2)/(r3*r3); return(r);int main()double xso2=0.08,x,t,r0=0,y; int i; FILE *fp;fp=fopen("data.txt","w"); for(i=0;i<5;i+)fprintf(fp,"R=%en",r0);for(t=693.15;t<=873.15;)x=0.01;dox=x+h;if(x>=1) break;y=fabs(pow(10,5)*r(x,t,xso2)-pow(10,5)*r0);while(y>0.0001);fprintf(fp,"%5.2f %5.4fn",t,x);t=t+5;r0=r0+pow(10,-6);fclose(fp);return(0);运行上述程序后,获得的数据见下表:温度T/k反响速率0.0 1.0 ×10-6×10-63.0 ×10-64.0 ×10-60.9809 0.9797 0.9782 0.0117 0.9762 0.2719 0.9740 0.4750 0.9715 0.6205 0.1844 0.9686 0.7214 0.3863 0.0784 0.9655 0.7901 0.5373 0.2903 0.0638 0.9620 0.8365 0.6473 0.4536 0.2689 0.9582 0.8674 0.7265 0.5761 0.4285 0.9541 0.8873 0.7828 0.6669 0.5500 0.9496 0.8995 0.8224 0.7336 0.6416 0.9447 0.8964 0.8237 0.7398 0.6529 0.9394 0.8927 0.8239 0.7444 0.6617 0.9338 0.8885 0.8231 0.7474 0.6685 0.9278 0.8837 0.8214 0.7491 0.6736 0.9213 0.8784 0.8188 0.7497 0.6772 0.9144 0.8725 0.8154 0.7492 0.6794 0.9071 0.8662 0.8113 0.7477 0.6804 0.8994 0.8593 0.8065 0.7453 0.6803 0.8912 0.8519 0.8010 0.7421 0.6792 0.8826 0.8440 0.7948 0.7380 0.6772 0.8735 0.8357 0.7881 0.7332 0.6743 0.8640 0.8268 0.7807 0.7277 0.6706 0.8540 0.8175 0.7727 0.7215 0.6661 0.8436 0.8077 0.7643 0.7146 0.6609 0.8327 0.7975 0.7552 0.7071 0.6550 0.8215 0.7868 0.7457 0.6990 0.6484 0.8097 0.7757 0.7357 0.6904 0.6412 0.7976 0.7642 0.7252 0.6812 0.6335 0.7851 0.7523 0.7142 0.6716 0.6252 0.7722 0.7400 0.7029 0.6614 0.6163 0.7590 0.7273 0.6912 0.6508 0.6070 0.7454 0.7143 0.6791 0.6398 0.5972 0.7315 0.7010 0.6666 0.6285 0.5870 0.7174 0.6874 0.6539 0.6167 0.5764 0.7030 0.6736 0.6408 0.6047 0.5654 根据上述数据制图:上图以温度为横坐标,转化率为纵坐标。5个速率,0比照,即反响平衡时、1×10-6、2×10-6、3×10-6、4×10-6,作T-X的等速率线。因为是一维拟均相平推流,如此;根据入口组成,设定入口温度,根据反响对入口温度所求偏导数在这一段内对组成的积分为零,可以求得此段出口转化率,即下一段的入口组成。催化剂用量最少时应使得;由于段内操作线的斜率为,因此根据入口温度、入口组成和出口组成计算可得出口温度。循环计算四段后可得最后的出口转化率,假如不能满足要求x98,如此重新设定第一段入口温度,再进展计算直至满足条件。编写c+程序,如下:#include<stdio.h>#include<math.h>double r(double x, double t, double xso2)double r,r1,r2,r3,keff,K,B,Kp,Pso2,Pso3,Po2; if(t>=693.15 && t<748.15) keff = 7.6915*pow(10,18)*exp(-76062 / (R*t); if(t>=748.15 && t<=873.15) keff = 1.5128*pow(10,7)*exp(-35992 / (R*t); K = 2.3*pow(10,-8)*exp(27200/(R*t); Kp=2.26203*pow(10,-5)*exp(11295.3 / t); Pso2=(xso2-xso2*x) / (1-xso2*x/2); Pso3=xso2*x / (1-xso2*x/2);Po2=(0.17-xso2-xso2*x/2) / (1-xso2*x/2); r1 =Po2*Pso2/Pso3; r2 =Pso3/(Pso2*sqrt(Po2)*Kp); B =48148*exp(-7355.5/t); r3 =sqrt(B+(B-1)*(1-x)/x)+sqrt(K*(1-x)/x); r =keff*K*r1*(1-r2*r2)/(r3*r3); return(r);double dr(double x, double t, double xso2)double y; y=(r(x,t+h,xso2)-r(x,t-h,xso2)/(2*h); return(y);double t(double t0, double x0, double x)double y,lamda,H=-23135,Cp=254.9,rou=0.500,c=1.282; lamda=-H*c/(rou*Cp); y=t0+lamda*(x-x0); return(y);double fun1(double x, double t, double xso2) double y; y=-dr(x,t,xso2)/(r(x,t,xso2)*r(x,t,xso2); return(y);double jifen(double x0, double t0, double xso2) double sum=0.0,x1=x0,x2,t1,t2=693.15,xout; do t1=t(t0,x0,x1); x2=x1+h/10; t2=t(t0,x0,x2); if(t2>873.15) xout = x1; goto end; sum=sum+h*(fun1(x1,t1,xso2)+fun1(x2,t2,xso2)/20; x1=x2; while(sum<0);xout=x1-h/10;end: return(xout);double wjifen(double xin, double xou, double tin, double xso2)double y,x1=xin,x2,t1,t2,sum=0.0,wcat;do t1=t(tin,xin,x1); x2=x1+h; t2=t(tin,xin,x2); if(t2>=873.15) goto end ; sum=sum+(1/r(x1,t1,xso2)+1/r(x2,t2,xso2)*h/1000; x1=x2; while(x2<=xou);end: wcat=sum*131*1000/3600; return(wcat);int main()double xso2=0.08,xout,tout,x0=0.0001,t0,t00=719,t1,wcat,wsum;int i,j;loop1:wsum=0.0;x0=0.0001;t0=t00;FILE*fp;fp=fopen("data2.txt","w");fprintf(fp,"1 tin=%f xin=%en",t00,x0);for(i=0;i<=3;i+)xout=jifen(x0,t0,xso2);tout=t(t0,x0,xout);fprintf(fp,"%d tout=%f ",i+1,tout);fprintf(fp,"xout=%f n",xout);wcat=wjifen(x0,xout,t0,xso2);fprintf(fp,"Wcat=%f ",wcat);wsum=wsum+wcat;t1= 693.15;dot1=t1+0.01;while(fabs(pow(10,5)*r(xout,t1,xso2)-pow(10,5)*r(xout,tout,xso2)>h);x0=xout;t0=t1;fprintf(fp,"%d tin= %f xin= %fn",i+2,t0,xout);fprintf(fp,"Wsum=%f n",wsum);t00=t00-0.1;fprintf(fp,"nn");if(x0<=0.98) goto loop1;return(0);所得数据如下:第一节反响器: tout=873.148833 xout=0.667660 kg第二节反响器: tout=778.519894 xout=0.903660 kg第三节反响器: tout=729.505692 xout=0.962040 kg第四节反响器: tout=697.388114 xout=0.980080 kg总催化剂:kg 作折线图如下:讨论:(1) 将第二个程序改为99%,因为在方程给出的最低温度693.15K时转化率为98.38%,无法达到99%,所以得不出99%转化率时的催化剂用量。(2) 程序如下举例,YSO2=7%:#include"math.h"#include"stdio.h"double r(double x,double t,double xso2)double r,r1,r2,r3,keff,K,B,Kp,Pso2,Pso3,Po2; if(t>=693.15 && t<748.15) keff = 7.6915*pow(10,18)*exp(-76062 / (R*t); if(t>=748.15 && t<=873.15) keff = 1.5128*pow(10,7)*exp(-35992 / (R*t); K = 2.3*pow(10,-8)*exp(27200/(R*t); Kp=2.26203*pow(10,-5)*exp(11295.3 / t); Pso2=(xso2-xso2*x) / (1-xso2*x/2); Pso3=xso2*x / (1-xso2*x/2); Po2=(0.21-xso2-xso2*x/2) / (1-xso2*x/2); r1 =Po2*Pso2/Pso3; r2 =Pso3/(Pso2*sqrt(Po2)*Kp); B =48148*exp(-7355.5/t); r3 =sqrt(B+(B-1)*(1-x)/x)+sqrt(K*(1-x)/x); r =keff*K*r1*(1-r2*r2)/(r3*r3); return(r);double dr(double x,double t,double xso2)double y; y=(r(x,t+h,xso2)-r(x,t-h,xso2)/(2*h); return(y);double t(double t0,double x0,double x)double y,lamda,H=-23135,Cp=254.9,rou=0.500,c=1.282; lamda=-H*c/(rou*Cp); y=t0+lamda*(x-x0); return(y);double fun1(double x,double t,double xso2) double y; y=-dr(x,t,xso2)/(r(x,t,xso2)*r(x,t,xso2); return(y);double jifen(double x0,double t0,double xso2) double sum=0.0,x1=x0,x2,t1,t2=693.15,xout; do t1=t(t0,x0,x1); x2=x1+h/10; t2=t(t0,x0,x2); if(t2>873.15) xout = x1; goto end; sum=sum+h*(fun1(x1,t1,xso2)+fun1(x2,t2,xso2)/20; x1=x2; while(sum<0);xout=x1-h/10;end: return(xout);double wjifen(double xin,double xou,double tin,double xso2)double y,x1=xin,x2,t1,t2,sum=0.0,wcat;do t1=t(tin,xin,x1); x2=x1+h; t2=t(tin,xin,x2); if(t2>=873.15) goto end ; sum=sum+(1/r(x1,t1,xso2)+1/r(x2,t2,xso2)*h/1000; x1=x2; while(x2<=xou);end: wcat=sum*131*1000/3600; return(wcat);int main()7,xout,tout,x0=0.0001,t0,t00=717,t1,wsum=0.0,wcat; double xou5,tou5,tin5,xin5; int i,j; FILE*fp; fp=fopen("data4.txt","w");loop1: x0=0.0001; t0=t00; i=0; xini=x0; tini=t00;loop2: xout=jifen(x0,t0,xso2); tout=t(t0,x0,xout); xoui=xout; toui=tout;t1= 693.15;do t1=t1+0.01; while(fabs(pow(10,5)*r(xout,t1,xso2)-pow(10,5)*r(xout,tout,xso2)>h);x0=xout; t0=t1;i+; xini=xout; tini=t0; if(i<=3) goto loop2;t00=t00-0.1;if(x0<=0.98) goto loop1; fprintf(fp,"i tin xin tout xout wcatn"); for(j=0;j<=3;j+) wcat=wjifen(xinj,xouj,tinj,xso2); fprintf(fp,"%d %5.5f %5.5f %5.5f %5.5f %5.5fn",j+1,tinj,xinj,touj,xouj,wcat); wsum=wsum+wcat; fprintf(fp,"wsum= %f (KG) %f (Ton)n",wsum,wsum/1000); fclose(fp);return(0);XSO2Tin/KXinTout/KXoutWcat/KGWsum/KG123412341234比拟可知:随着XSO2的增加,如果还须保持98%的转化率,那么各级催化剂的用量增加,总催化剂的用量增加。