合成氨蒸汽重整填料床反应器Polymath建模代码报错求解决
甲烷蒸汽重整反应器Polymath建模报错排查方案
已定位错误点
- 语法缺失:Polymath不支持省略乘号的隐式乘法,代码中
k1(PCH4*PH2O^0.5)、KH2O(PH2O/PH2)等位置均缺失乘号*,同时rCH4动力学表达式的括号配对不完整,直接触发语法报错。 - 变量定义冲突:无因次压力
p被同时赋值为p=P/P0和定义为微分方程d(p)/d(W)的求解变量,因果逻辑颠倒;固定总压P=3550的写法导致压降方程完全失效,正确逻辑应为P = p * P0,p由压降微分方程求解得到。 - 反应速率循环引用:先通过计量关系定义
rCH4=-rCO等关联式,后定义rCH4的动力学表达式,形成变量循环调用,且计量符号错误:甲烷蒸汽重整反应CH₄+H₂O=CO+3H₂的计量关系应为rCH4 = rCO = -rH2O = rH2/3,需先定义动力学rCH4,再推导其余组分的反应速率。 - 无效初始条件:
rH2O(0)=0、rCO(0)=0、rH2(0)=0为冗余定义,反应速率是代数计算变量,不属于微分求解变量,不需要设置初始值。 - 热力学项表达式错误:动力学中的平衡项原写法为
(1-((PCO*PH2^3)/Kp*PCH4*PH2O)),括号位置错误导致平衡常数Kp的运算逻辑错误,正确应为(1-(PCO*PH2^3)/(Kp*PCH4*PH2O))。
修正后可运行代码
d(FCH4) / d(W) = rCH4 FCH4(0) = 606.44 d(FH2O) / d(W) = rH2O FH2O(0) = 766.041 d(FH2) / d(W) = rH2 FH2(0) = 0 d(FCO) / d(W) = rCO FCO(0) = 0 d(p)/d(W) = (-alpha/(2*p))*(FT/FT0) FT0=606.44+766.041 FT=FCO+FH2+FH2O+FCH4 P0=100 P = p * P0 xH2O=FH2O/FT xCO=FCO/FT xCH4=FCH4/FT xH2=FH2/FT T=1093 Kp=1.198e17*exp(-26830/T) k1=310.8e7 KCO=4.013e2 KH=1e2 KH2O=0.90194 PH2=xH2*P PCO=xCO*P PCH4=xCH4*P W(0) = 0 PH2O=xH2O*P density0=1.521 Ac=0.0113097 densitycat=1123.6 por=0.45 gc=1 G=207708.33 Dp=0.000125 rCH4=((k1*(PCH4*PH2O^0.5)/PH2^1.25)*(1-(PCO*PH2^3)/(Kp*PCH4*PH2O)))/(1+KCO*PCO+KH*PH2^0.5+KH2O*(PH2O/PH2))^2 rCO = rCH4 rH2O = -rCH4 rH2 = 3*rCH4 Beta0 = (((G*(1-por))/(density0*gc*Dp*(por^3)))*(1.75*G)) * (1e-5) alpha = (2*Beta0)/(Ac*densitycat*(1-por)*P0) W(f)=24943.92
内容的提问来源于stack exchange,提问作者TryingToCode
相关产品推荐
相关产品推荐

