COMSOL中相场方法模拟多孔介质驱替计算案例
、comsol中相场方法模拟多孔介质中驱替的计算案例 提供采用相场方法模拟多孔介质中驱替的算例,可在此基础上学会多孔介质中的驱替模拟,得到水驱油(或其他两相)后多孔介质中的残余油分布,计算采出程度随时间的变化关系。 附图中分别给出了多孔介质为水湿和油湿条件下,多孔介质中的残余油分布。
多孔介质里的流体驱替总带着点玄学色彩,尤其是看着油滴卡在岩石缝里死活不出来的时候。COMSOL的相场法模拟能把这过程掰开了揉碎了看——今天就拿水赶油的场景,聊聊怎么用相场法抓准岩石表面亲水亲油特性对残余油的影响。
先扔个核心代码片段镇楼:
phi = pf_model.create('phi', 'PhaseField') phi.set('gamma', 1e-3) # 界面能参数 phi.set('epsilon', 5e-6) # 界面厚度控制 # 两相流动耦合 flow = pf_model.create('Flow', 'LaminarFlow') flow.link_phase_field(phi, 'wetting_phase') flow.set('contact_angle', [90, 30]) # 油湿/水湿切换关键这段代码里的contact_angle参数是灵魂所在——当岩石表面亲油时(油湿),接触角得设成大于90度,亲水时(水湿)就设成锐角。实际模拟时会发现,亲水表面的残余油就像咖啡渍一样星星点点(图1),而亲油表面的油块则像融化的巧克力黏在杯底(图2)。
、comsol中相场方法模拟多孔介质中驱替的计算案例 提供采用相场方法模拟多孔介质中驱替的算例,可在此基础上学会多孔介质中的驱替模拟,得到水驱油(或其他两相)后多孔介质中的残余油分布,计算采出程度随时间的变化关系。 附图中分别给出了多孔介质为水湿和油湿条件下,多孔介质中的残余油分布。
网格划分是个技术活,特别是在孔隙结构复杂的区域。建议用边界层网格加密,比如:
% 孔隙边缘加密 mesh.create('pore_edge', 'Edge'); mesh.set('element_size', 0.1, 'selection', 'pore_edge');不这么干的话,相界面可能在狭窄孔隙处出现锯齿状失真,毕竟界面厚度epsilon设的是微米级,网格太粗直接导致数值扩散。
采出程度曲线怎么抓?在出口边界设个流量积分探针:
// 采出量计算 Integration coupling_int; coupling_int.selection.named('outlet'); double oil_produced = coupling_int.integrate(phi_oil*velocity);但要注意相场法中体积分数phi_oil不是严格物理量,需要做正则化处理。实测发现当驱替速度超过临界毛细数时,采出曲线会出现平台期——这时候再注水就是赔本买卖了。
最后给个实战技巧:用参数化扫描同时跑不同接触角的工况,比单个案例反复调试快三倍。遇到过不收敛的情况?把相场移动的阻尼系数调大0.5个数量级,亲测有效。
