网站网页制作图片素材wordpress改头像
网站网页制作图片素材,wordpress改头像,莱山做网站的公司,王也道长头像无水印COMSOL注CO2驱替甲烷#xff08;瓦斯#xff09;打开COMSOL Multiphysics的时候#xff0c;突然意识到实验室那台老旧的甲烷吸附装置终于可以被数字化了。今天咱们不聊复杂的理论#xff0c;直接上手用COMSOL做个CO₂驱替甲烷的模拟——毕竟在页岩气开采现场#xff0c;这…COMSOL注CO2驱替甲烷瓦斯打开COMSOL Multiphysics的时候突然意识到实验室那台老旧的甲烷吸附装置终于可以被数字化了。今天咱们不聊复杂的理论直接上手用COMSOL做个CO₂驱替甲烷的模拟——毕竟在页岩气开采现场这种气体置换操作可比实验室的瓶瓶罐罐刺激多了。先看模型搭建的关键部分。咱们直接在COMSOL的模型向导里选择多孔介质流物质传递的组合拳model ModelUtil.create(GasDisplacement); model.modelNode.create(comp1); model.geom.create(geom1, 3); model.geom(geom1).lengthUnit(meter);这里的三维几何定义可不是随便画的。实际储层中那些纳米级孔隙的分布咱们用随机函数生成等效多孔结构porousMatrix (x,y,z) 0.2 0.05*randn(size(x)); model.geom(geom1).create(porousDomain, Block); model.geom(geom1).feature(porousDomain).set(size, [10 5 3]); model.geom(geom1).run;别被这些代码吓到其实就是在造个10m×5m×3m的模拟区域孔隙率设定在20%基准值上下5%随机波动——毕竟真实岩层哪有那么规整。接下来是物理场的重头戏。注CO₂时的非达西流必须用Brinkman方程描述否则会低估驱替压力physics model.physics.create(BrinkmanFlow, BrinkmanEquations, geom1); physics.feature(br1).set(rho, rho_gas); physics.feature(br1).set(eta, mu_gas); physics.feature(br1).set(alpha, 1/k0);这段代码里的玄机在于渗透率k0的处理。实验室测得的宏观渗透率需要换算成等效参数这里我通常会偷偷乘个形状因子——比如页岩的0.6~0.8倍不过论文里可别写这个。COMSOL注CO2驱替甲烷瓦斯物质传输模块才是真正的战场。CO₂和CH₄的竞争吸附得用扩展的Langmuir方程model.physics.create(Transport, DiluteSpecies, geom1); model.physics(Transport).feature(sp1).set(D, D_eff); model.physics(Transport).feature(sp1).set(R, Qmax*(k_CO2*c_CO2/(1k_CO2*c_CO2) - k_CH4*c_CH4/(1k_CH4*c_CH4)));注意看反应项R的表达式这里藏了个陷阱——很多新手会忽略分母中的浓度项导致吸附量计算超标。记得加上1kc的缓冲项否则程序分分钟给你报负浓度错误。求解器配置是灵魂所在。瞬态分析建议用向后差分公式BDF但时间步长别太耿直model.study.create(std1); model.study(std1).create(time, Transient); model.study(std1).feature(time).set(tlist, range(0,10,3600)); model.sol.create(sol1); model.sol(sol1).study(std1); model.sol(sol1).attach(std1); model.sol(sol1).create(st1, StudyStep); model.sol(sol1).create(v1, Variables); model.sol(sol1).create(t1, Time);这个时间步长设置从0秒到1小时每10秒存个数据点。但实际操作中前30秒建议用0.1秒步长之后逐步放开——就像开手动挡车换挡既能捕捉初始冲击又不会算到地老天荒。最后看个有意思的输出驱替前缘的推进速度。用后处理中的等值面追踪功能抓取CO₂浓度10%的界面model.result.dataset.create(surf1, Surface); model.result.dataset(surf1).set(data, dset1); model.result.create(pg1, PlotGroup3D); model.result(pg1).create(surf1, Surface); model.result(pg1).feature(surf1).set(expr, c_CO2); model.result(pg1).feature(surf1).set(rangeval, 0.1);跑完模拟会发现前缘推进呈现明显指进现象——这可不是程序bug而是黏性指的真实再现。下次组会要是有人质疑模拟结果太毛糙直接把这段流体不稳定性分析甩过去。