- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
反应器大作业(SO2优化)
化学反应器理论大作业
——二氧化硫转化器最优化
学 院: 化学工程学院
班 级: 化研1108
学 号: 2011200126
姓 名: 马树刚
二氧化硫转化器的最优化
题目背景:SO2+1/2O2=SO3
基础数据:
混合物恒压热容 Cp =0.2549[kcal/kg·K]
-ΔH =23135[kcal/kmol]
床层空隙率 ρb=554[kg/m3]
进口SO2浓度8.0%,O2浓度9.0%,其余为氮气。
处理量131[kmolSO2/hr],要求最终转化率98%。
(1)在T-X图上,做出平衡线,至少4条等速率线;
(2)以一维拟均相平推流模型为基础,在催化剂用量最少的前提下,总的及各段的催化剂装量;进出口温度、转化率;并在T-X图上标出折线;
(3)程序用C,Fortran,BASIC语言之一编制;讨论:
(1)要求的最终转化率从97%变化到99%对催化剂用量的影响;
(2)如果有关系:YO2+YSO2=21%,SO2进口浓度在7-9%之间变化,对催化剂
选做:对优化结果进行校核。
算法简介及计算程序和结果
解题思路
已知第一段入口和最后一段出口的转化率;第一段入口反应物浓度,各物性参数;段与段间采用间接冷却。可改变的参数为各段的入口温度;段与段之间的转化率。
图2.1 反应流程图
由上述反应流程图分析可知:根据已知的入口组成,设定入口温度,根据反应速率对入口温度所求偏导数在这一段内对组成的积分为零可以求得此段出口转化率和出口温度,即得到下一段的入口转化率,又根据前一段的出口速率等于后一段的入口速率,可以求得下一段的入口温度;这样又可以计算下一段的出口情况。这样反复计算直至求出最后的出口情况。判断此出口情况是否满足题给条件(转化率达到98%),若不满足条件,则应重新假设再进行计算。这样反复寻优直至满足条件。计算公式如下:
第一段:
第一、二段之间:
第二段:
第二、三段之间:
第三段:
第三、四段之间:
第四段:
其中:为绝热温升
计算程序和结果
2.1平衡线及等速率线的计算程序:
利用反应速度表达式,代入不同的速度值来确定不同温度下的转化率,从而求取等速率线和平衡线(速度等于0)。程序如下:
#include math.h
#include stdio.h
#include iostream.h
#include stdlib.h
const double R=1.987;
void strcopy(char *str1,char *str2)
{
for(int i=0; i6; i++)
{
str1[i]=str2[i];
}
}
double rate( double x, double t)
{
double y,y1,y2,y3,keff,k,B;
if(t=693.15 t748.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));
y1 = ((0.09-0.04*x) / (1-0.04*x)) * ((0.08-0.08*x) / (1-0.04*x)) / (0.08*x / (1-0.04*x));
y2 = (0.08*x / (1-0.04*x)) / (((0.08-0.08*x) / (1-0.04*x)) * sqrt((0.09-0.04*x) / (1-0.04*x)) * 2.26203*pow(10,-5)*exp(11295.3 / t));
B = 48148*exp(-7355.5 / t);
y3 = sqrt(B+(B-1)*(1-x) / x) + sqrt(k*(1-x) / x);
y = keff*k*y1*(1-y2*y2) / (y3*y3);
return y;
}
void main()
{
double x,t,d;
double r0=0,step=0.0001;
FILE *fp;
char filename[6];
for(int i=0; i=5; i++)
{
t=693.15;
do
{
x=0.01;
do
{
x
文档评论(0)