2026/1/12 12:54:14
网站建设
项目流程
购物网站 wordpress 英文模板,精美ppt模板免费下载网站,网站建设维护 天博网络,湖南刚刚发生的大事件基于速率模型的乙醇胺(MEA)吸收捕集二氧化碳模拟、教学。刚接触化工模拟的朋友看到MEA吸收CO₂的文献可能会懵——又是传质方程又是反应动力学#xff0c;密密麻麻的公式看得人头皮发麻。今天咱们换个姿势#xff0c;用Python把抽象概念变成看得见的代码#xff0c;手把手拆…基于速率模型的乙醇胺(MEA)吸收捕集二氧化碳模拟、教学。刚接触化工模拟的朋友看到MEA吸收CO₂的文献可能会懵——又是传质方程又是反应动力学密密麻麻的公式看得人头皮发麻。今天咱们换个姿势用Python把抽象概念变成看得见的代码手把手拆解这个经典流程。先来点干货典型的MEA吸收塔模型核心就两个微分方程def absorption_model(t, y): dCO2_gas -kL_a*(y[0] - H*y[1]) # 气相浓度变化 dCO2_liq (kL_a*(y[0] - H*y[1]) - rxn_rate)/L # 液相浓度变化 return [dCO2_gas, dCO2_liq]这段代码藏着三个关键参数kLa是传质系数H是亨利常数rxnrate是反应速率。重点看那个负号——气相浓度降低的量正好等于液相增加的量当然要考虑反应消耗这就是质量守恒的代码表达。反应速率计算更有意思MEA和CO₂的跳舞可以用下面这个函数表示def get_rxn_rate(C_CO2, C_MEA): # 二级反应速率公式 k2 0.0175 # m³/(mol·s) 30℃数据 return k2 * C_CO2 * C_MEA这里的k2是个需要实测的参数。注意函数参数用的是实时浓度说明反应速率在吸收过程中是动态变化的——这也是为啥必须用微分方程求解。接下来上主程序from scipy.integrate import solve_ivp import numpy as np # 操作参数 L 0.5 # 液层高度(m) H 0.8 # 亨利常数 kL_a 0.15 # 总传质系数(1/s) C_MEA0 300 # 初始MEA浓度(mol/m³) # 求解区间和初值 t_span (0, 30) # 30秒模拟 y0 [120.0, 15.0] # 初始气相和液相CO₂浓度 sol solve_ivp(absorption_model, t_span, y0, methodBDF)这里选用了BDF求解器适合处理可能出现的刚性问题。跑完程序后画个图看看趋势import matplotlib.pyplot as plt plt.figure(figsize(10,6)) plt.plot(sol.t, sol.y[0], r--, labelGas phase) plt.plot(sol.t, sol.y[1], b-, labelLiquid phase) plt.xlabel(Time (s)) plt.ylabel(CO₂ Concentration (mol/m³)) plt.legend() plt.show()不出意外的话会看到气相浓度快速下降液相浓度先上升后趋缓——这就是传质推动力减弱的典型特征。有意思的是如果把kL_a调大曲线会变得更陡这提示我们在实际操作中可以通过增加气液接触面积来提高吸收效率。调试时遇到过坑当MEA浓度过低时液相浓度可能出现负值。后来加了约束条件dCO2_liq max((kL_a*(y[0] - H*y[1]) - rxn_rate)/L, 0)这种处理虽然粗暴但能避免计算结果崩掉。不过更严谨的做法应该是建立代数约束这就得搬出DAE求解器了下次再展开说。最后留个思考题如果把进料浓度设为随时间变化的正弦波系统响应会呈现什么特征试着改改初值条件说不定能发现有趣的动态行为。