SO2反应器最优化(北化化反大作业)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二氧化硫转化器最优化
声明:本人使用Fortran90语言独立完成该作业。在前几届学生遗留下来的作业模板中,多数使用matlab软件或C语言编译,本人至今未见使用Fortran语言编译的作业。私以为Fortran语言相比于matlab语言或C语言,有着得天独厚的优势,更具有学习价值。故本作业的独立性毋庸置疑!
题目:SO
2+1/2O
2
=SO
3
,四段绝热反应器,级间间接换热。
1.基础数据:
混合物恒压热容C p=0.2549[kcal/kg·K]
-ΔH =23135[kcal/kmol]
床层空隙率ρb=554[kg/m3]
进口SO2浓度8.0%,O2浓度9.0%,其余为氮气。
处理量131[kmolSO2/hr],要求最终转化率98%。
2.动力学方程:
其中:
()
()
()[]sec.
/
1
1
2
2
3
2
3
2
3
2
2
2
gcat
mol
P
P
K
P
P
B
B
P
P
K
P
k
R
SO
SO
SO
SO
SO
SO
O
eff
SO
+
-
+
-
=
ξ
-
()
()
987
.1
3.
11295
exp
10
26203
.2
27200
exp
10
3.2
5.
7355
exp
48148
600
475
35992
exp
10
5128
.1
475
420
76062
exp
10
6915
.7
5
2
1
8
7
18
2
2
3
=
⎪
⎭
⎫
⎝
⎛
⨯
=
⎪
⎭
⎫
⎝
⎛
=
⎪
⎭
⎫
⎝
⎛
⨯
=
⎪
⎭
⎫
⎝
⎛-
=
-
⎪
⎭
⎫
⎝
⎛-
⨯
=
-
⎪
⎭
⎫
⎝
⎛-
⨯
=
-
-
R
T
K
P
P
K
P
RT
K
T
B
C
RT
k
C
RT
k
P
O
SO
P
SO
o
eff
o
eff
ξ
要求1:在T~X 图上,做出平衡线,至少4条等速率线 (1)平衡线:
反应简写为:A + 1/2B = C
当反应平衡时,(-r A )=0,得到(1-ξ2)= 0 ,即ξ= 1 整理得:P C =K p P A P B 1/2 其中:
00.08A y =00.09B y =0.5A δ=-
当X A 从0~1范围内变化时,可确定与X Ae 唯一对应的平衡温度T e ,编写程序使X A 从1.0开始,间隔为-0.1 ,分别算出相应的T e ,即得平衡线:
图1 平衡温度—平衡转化率示意图
00(1)1A A A A A A
y P X P y X δ-=
+0001(1)
2
1B A A B A A A
y P y P X P y X δ--=
+001A A C A A A
y PX P y X δ=
+
(2)等速率线
由于在同一反应速率(-r A )下,某一转化率X A 可能对应两个温度T ,而某一温度T 下,则对应唯一转化率X A 。所以..绘制等速率线时,........我.采用的方法为:.......先.确定反应速率......(.-.r .A .).,再..确定..温度..T .,然后对....X .A .从.0.到.1.进行迭代,.....找到..那个唯一的.....X .A .。当然,在求解X A 时也可以使用割线法等其他迭代算法,那样精度更高。但是此处绘制等速率线更多的是为了得到X A ~T 的趋势,而精度的降低并不影响曲线的走势。
图2 420~600℃ 下平衡线与等反应速率线
要求2:以一维拟均相平推流模型为基础,在催化剂用量最少的前提下,总的及各段的催化剂用量;进出口温度、转化率;并在T-X 图上标出折线。
分析:要使总得催化剂用量最少,则每一段催化剂用量都要达到最小。当确定每一段
的X in 和X out 之后,根据0
(,)
out
in
X cat
A
X
A A A W dX F r X T =⎰可确定最佳进口温度T in ,使得W cat
最小,即满足:
(,)
10out
in
X A A A X
A in
r X T dX r T ∂=∂⎰(式1)。但在实际计算中,第一段
的X in 是知道的,只需假定一个T in 值,即可根据上式得到X out ,进而由操作线算出T out 。而段与段之间有,,1out i
in i X X +=,为使任意两段之间催化剂之和最小,进一步可
以得出段与段之间需满足:
,,,1,1(,)(,)out i out i in i in i r X T r X T ++=由
上式可确定下一段入口温度T in , i+1,如此循环四次即可得到各段反应器进出口温度、转化率,以及催化剂用量。
需要特别注意的是:.........在.计算积分式时,.......采用..的是数值....微.积分方法....。.在对..X .A .取微小步....长.Δ.X .时,..T .也会沿着操作线移动,..........得到..新的..T .’.,.下一步...的数值微积分是基于新的...........T .’.而计算的,.....如此..循环往复。.....在.编程的过程中,.......正.是由于本人忽略了这一点,误.............认为..T .值是不变的,从而导致了严重的计算错误,...................始终..得不到正确的解.......,.浪费了...大量时间查.....找算法上的错误,........而.忽略了对问题本质的研究。............这也..让我想起了导师王健红的一句话:...............“.建模..的关键不是优化算法,而是准确认识模型的原型!......................”. 以下几点计算过程中的问题,也应该得到重视:
①由X in 和T in 计算X out 时,X out 有两个限制条件,一是不能越过平衡线,二是X out 和操作线确定的温度不能越过600℃ ②根据,,
,1,1(,)(,)out i out i in i in i r X T r X T ++=求解T i n , i+1时,使用割线法对迭
代初值要求很严格,如果初值选择不合适,会导致得不到想要的解,甚至无解。虽然有其他高阶算法可以避免这类问题,但由于反应速率方程难以求得解析导,故不适用。 此处本人选择的是一个“笨办法”,也可以叫做试探法:T 从420℃开始,取微小增量进行迭代计算,直到满足r i+1 = r i 为止。此法虽然看起来“笨”,精度略低,但却在一定程度上加快了程序运行速度,巧妙得解决了问题。