二氧化硫反应器最优化(2015届作品)
- 格式:docx
- 大小:96.68 KB
- 文档页数:12
二氧化硫反应器最优化题目:SO 2+1/2O 2=SO 3,四段绝热反应器,级间间接换热。
1.基础数据:混合物恒压热容C p =0.2549[kcal/kg ·K] -ΔH =23135[kcal/kmol] 床层空隙率ρb =554[kg/m 3]进口SO 2浓度8.0%,O 2浓度9.0%,其余为氮气。
处理量131[kmolSO 2/hr],要求最终转化率98%。
2.动力学方程:式中:3.基本要求:(1)在T -X 图上,做出平衡线,至少4条等速率线;(2)以一维拟均相平推流模型为基础,在催化剂用量最少的前提下,总的及各段的催化剂装量;进出口温度、转化率;并在T-X 图上标出折线; 4.讨论:(1)要求的最终转化率从98%变化到99%对催化剂用量的影响;(2)如果有关系:YO 2+YSO 2=21%,SO 2进口浓度在7-9%之间变化,对催化剂装量的影响()()()[]sec ./112232323222gcat mol P P K P P B B P P K P k R SO SO SO SO SO SO O eff SO +-+-=ξ-()()987.13.11295exp 1026203.227200exp 103.25.7355exp 4814860047535992exp 105128.147542076062exp 106915.75218718223=⎪⎭⎫⎝⎛⨯=⎪⎭⎫ ⎝⎛=⎪⎭⎫⎝⎛⨯=⎪⎭⎫⎝⎛-=-⎪⎭⎫⎝⎛-⨯=-⎪⎭⎫⎝⎛-⨯=--R T K P P K P RT K T B C RT k C RT k P O SO P SO oeff oeff ξ第(1)问计算思路:通过观察反应动力学方程可以发现:反应速率(-r A)是X A和T的函数。
也就是说,这三个变量知道了两个可以求出第三个。
所以,我的计算方法如下:先确定反应速率(-r A)的值(0-4×10-6),再在某一反应速率下,给定温度T,找到X A的值,使得由X A 和T算出的(-r A)等于最开始假定的(-r A)值。
设计程序输出所有满足(-r A) = f (X A, T)的数据,即可在T-X图上,做出平衡线及等速率线。
程序如下所示:(使用Fortran语言编译)Module ChemRecImplicit NoneReal :: PA , PB , PC , Kp , T , keff , B , K , ksi , rAReal :: XAReal,parameter :: P=1.01325 , yA0=0.08 , yB0=0.09 , R=1.987ContainsSubroutine JiSuan ()PA=yA0*P*(1-XA)/(1-0.5*yA0*XA)PB=(yB0*P-0.5*yA0*P*XA)/(1-0.5*yA0*XA)PC=yA0*P*XA/(1-0.5*yA0*XA)IF (T<748.15) Thenkeff=7.6915E18*EXP(-76062/R/T)Elsekeff=1.5128E7*EXP(-35992/R/T)End IFB=48148*EXP(-7355.5/T)K=2.3E-8*EXP(27200/R/T)Kp=2.26203E-5*EXP(11295.3/T)ksi=PC/Kp/PA/SQRT(PB)rA=keff*PB*K*PA/PC*(1-ksi**2)/(SQRT(B+(B-1)*PA/PC)+SQRT(K*PA/PC))**2End Subroutine JiSuanEnd Module ChemRecProgram mainuse ChemRecImplicit NoneInteger :: iReal :: rA0Open (50 , file = 'data1.csv')Do i=1,5rA0 =(i-1)*1.e-6Write (50,*) "rA=" , rA0T = 420+273.15150 XA=1.0100Call JiSuan()IF (ABS(rA0-rA)<1.E-10) ThenWrite (50,*) XA ,T-273.15ElseXA=XA-0.00001IF (XA>0) GOTO 100End IFT=T+5IF (T<=883.15) GOTO 150End DoClose ( 50 )End Program main由程序输出数据作图可得:(原始数据见附录)T / ℃第(2)问计算思路:根据0(,)outinX catA X W dxF r x T =⎰计算每段的最小催化剂用量根据,,11,1,(,)(,)i i out i out i i in i in r X T r X T +++=确定两段之间的温度 具体思路老师课上已经讲得非常清楚了,这里本人不愿赘述。
以下说几点真正在编程中可能遇到的问题,供参考。
·操作线斜率1/λ的计算:00()A p gH u C dT dX uC λρ-∆==作简化假设:u 0 = u 假设入口气体为理想气体:00A A y C P RT=、g m m PV n RT ρ== 入口气体摩尔质量:222200A SO B O N N m y M y M y M =++·数值法求积分,使积分式=0时,采用梯形面积法求积分。
x 取微小步长后,T 随操作线也有微小步长。
求和过程中T 值每一步都有变化。
·积分式求每一段出口转化率时,出口转化率X out 不能越过平衡线,也不能超过600℃对应的转化率。
·如果任意一段反应器触及平衡线,则直接跳过此温度,猜测下一温度。
程序如下:Module ChemRec Implicit NoneReal (kind=8) :: PA , PB , PC , Kp , T , keff , B , K , ksi , rA ,&rA0 , DT , DX , FT , Xmax , S , Xin , Xout , Tin , Tout ,& XA , W , X , TOL , XAe , N , E , FX , det , X0 , FX0 , & Sum , W_sum , Tin_1 , lmdReal ,parameter :: P=1.01325 , yA0=0.08 , yB0=0.09 , R=1.987 Logical :: bJump ContainsSubroutine JiSuanFenYa () PA=yA0*P*(1-XA)/(1-0.5*yA0*XA) PB=P*(yB0-0.5*yA0*XA)/(1-0.5*yA0*XA) PC=yA0*P*XA/(1-0.5*yA0*XA) End Subroutine JiSuanFenYaSubroutine JiSuanRA ()IF (T<748.15) Thenkeff=7.6915E18*EXP(-76062/R/T)Elsekeff=1.5128E7*EXP(-35992/R/T)End IFB=48148*EXP(-7355.5/T)K=2.3E-8*EXP(27200/R/T)Kp=2.26203E-5*EXP(11295.3/T)ksi=PC/Kp/PA/SQRT(PB)rA=keff*PB*K*PA/PC*(1-ksi**2)/(SQRT(B+(B-1)*PA/PC)+SQRT(K*PA/PC))**2End Subroutine JiSuanRASubroutine GeXianFa()IF (N<=1) Thendet = -0.1Elsedet = -FX*(X-X0)/(FX-FX0)End IFX0=XFX0=FXE=abs(det)/(abs(X)+1.)X=X+detEnd Subroutine GeXianFaSubroutine JiSuanXAe()X=1N=0130 N=N+1FX=2.26203E-5*exp(11295.3/(lmd*(X-Xin)+Tin))*(1-X)*sqrt(P*(yB0-yA0*X/2)/& (1-yA0*X/2))-XCall GeXianFa ()IF (E>=1.E-6) GOTO 130XAe=XEnd Subroutine JiSuanXAeSubroutine JiSuanXout()bJump = .false.S=0DT=0.000001DX=0.00001T=TinXA=XinCall JiSuanXAe()Xmax=(873.15-T)/lmd+Xin IF (Xmax>1.0) Xmax=1.0 100Call JiSuanFenYa()Call JiSuanRA()rA0=rAT=T+DTCall JiSuanRA()FT=(rA0-rA)/DT/rA**2S=S+FT*DXIF (XA>=XAe) ThenbJump = .true.ReturnEnd IFIF (XA>=Xmax) ReturnIF (S>0) ThenXA=XA+DXT=lmd*DX+TGOTO 100End IFEnd Subroutine JiSuanXoutSubroutine JiSuanW()Sum=0T=TinXA=XinDX=0.00001110Call JiSuanFenYa() Call JiSuanRA()rA0=rAFT=1/rA0Sum=Sum+FT*DXIF (XA>=Xout) ReturnXA=XA+DXT=T+lmd*DXGOTO 110End Subroutine JiSuanWSubroutine JiSuanT()XA=XoutT=ToutCall JiSuanFenYa()Call JiSuanRA()rA=rA0T=420+273.15120Call JiSuanRA()IF (abs(rA-rA0)<1.E-11) ThenReturnEnd IFT=T+0.0001GOTO 120End Subroutine JiSuanTEnd Module ChemRecProgram mainuse ChemRecImplicit NoneInteger :: iOpen ( 30 , file = 'data2.csv')lmd = 23135*yA0/0.2549/(64*yA0+32*yB0+(1-yA0-yB0)*28) Tin_1= 420 +273.15300 Tin = Tin_1Xin=1.E-10W_sum=0i=0200 i=i+1Call JiSuanXout()IF (bJump) GOTO 400Xout=XATout=lmd*(Xout-Xin)+TinIF (Tout>873.15) Tout=873.15Call JiSuanW()W=Sum*131/3600W_sum=W_sum+WCall JiSuanT()Tin = TXin=XoutIF (i<4) GOTO 200IF (Xout>0.98) ThenWrite (30 , *) Tin_1-273.15 ,',', Xout ,',' , W_sum End IFIF(Tin_1 < 600 +273.15) Then400 Tin_1 = Tin_1 + 0.01GOTO 300End IFEnd Program main该程序运行结果为:在420~600℃范围内,以ΔT=0.01为步长输出所有满足最终转化率>98%的入口温度T in、出口转化率X out、催化剂总装量W cat。