基于COMSOL相场方法模拟多孔介质两相驱替的算例及毛管数与饱和度计算方法
提供基于comsol中相场方法模拟多孔介质两相驱替(水气、油水等等)的算例(也可以定做水平集驱替的算例),可在此基础上学会利用comsol软件进行两相流驱替的模拟,拓展研究,具体参考算例附后。 附赠基于相场方法模拟驱替时的毛管数计算方法和饱和度计算方法

打开COMSOL界面时总会被满屏的物理场选项搞得头大?别慌,今天咱们直接上手用相场法搞个两相驱替模拟。先来点有意思的——想象把咖啡渍从桌布里挤出来的过程,这就是典型的水气驱替场景。

打开模型向导创建2D模型,物理场选"流体流动→多相流→相场",时间依赖研究必须勾选。网格建议用超细化三角形,重点区域加边界层——就像给咖啡渍边缘加特写镜头(见图1)。记得在材料属性里把两相黏度比调成3:1,表面张力系数设0.072N/m,这参数能让界面变形更明显。

提供基于comsol中相场方法模拟多孔介质两相驱替(水气、油水等等)的算例(也可以定做水平集驱替的算例),可在此基础上学会利用comsol软件进行两相流驱替的模拟,拓展研究,具体参考算例附后。 附赠基于相场方法模拟驱替时的毛管数计算方法和饱和度计算方法

核心代码藏在相场参数设置里:
phi = 2*(c-0.5); // 相场变量转换
F = 0.1*phi^3 - 0.1*phi; // 双井势函数
epsilon = 0.05; // 界面厚度参数
这里的epsilon控制界面模糊程度,设太小会算到地老天荒。边界条件要搞点花样——入口用速度入口,出口压力出口,多孔介质区加达西源项,操作起来像这样:
u = 0.1[mm/s]*((t<10[s]) + 0.3*(t>=10[s])); // 分阶段注入速度
跑完模拟该算毛管数了,这可是驱替效率的关键指标。在派生值里新建积分算子:
Ca = (viscosity_water*velocity)/(surface_tension); // 无量纲数计算
饱和度统计更简单——在相场变量c大于0.5的区域面积占比就是水相饱和度。进阶玩家可以修改方程里的迁移率函数:
lambda = c^2*(1-c)^2; // 试试改成c^3看界面怎么变
遇到过数值震荡?把时间步长改自适应BDF方法,稳定性立马提升。最后说个骚操作——把多孔介质参数改成随机分布,模拟真实岩心的非均质性,效果比教科书案例带感多了。

(后记:需要水平集法案例的私信,记得备注孔隙结构参数)




DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)