comsol模拟油往地下渗透现象,考虑两层多孔介质,结果显示出油随着时间逐渐向下扩散。
地下油料渗透这事儿看着简单,实际模拟起来能把人逼疯。上周我在COMSOL里整了个两层多孔介质的模型,差点没被那些参数设置搞到自闭。不过最后跑出来的动态渗透效果还挺有意思,油膜像融化的巧克力酱一样慢慢浸润下去,不同介质层的阻拦作用也特明显。
先说说模型结构,第一层是砂土层(孔隙率0.35),第二层黏土层(孔隙率0.15)。关键得用多物理场的"多孔介质和地下水流"模块,把达西定律和物质传递方程揉在一起。这里有个坑:两层介质的接口处必须用连续性边界条件,不然会出现物理上不现实的浓度断层。
核心代码段长这样:
model.component("comp1").physics("sp").feature("init1").set("c", "0"); # 初始浓度清零 model.param().set("k_sand", "1e-10[m^2]"); # 砂土渗透率 model.param().set("k_clay", "5e-12[m^2]"); # 黏土渗透率渗透率参数k的设置直接决定渗透速度。注意单位别用错,有次手滑写成cm²结果油渗得比水龙头还快,场面极其魔幻。
求解器配置是门玄学。时间步长建议用分段函数:
study.step("time").set("tlist", "range(0,3600,86400)"); # 从0秒开始,每小时存个快照这样既能捕捉初期快速渗透,又不至于在后期等得睡着。记得打开自动非线性检测,COMSOL有时候会误判多孔介质耦合问题的收敛性。
模拟结果出来后发现个有趣现象:前6小时油主要在砂土层横向扩散,就像打翻的奶茶在纸巾上洇开。12小时后黏土层开始起作用,渗透方向突然变成垂直向下,这时候浓度等值线就跟刀切似的整齐。用后处理做个动画,能清楚看到油锋面在两层介质交接处明显降速——这效果拿出去汇报绝对能让甲方闭嘴。
不过真要用到实际环境预测,还得考虑介质非均质性。试着把黏土层的渗透率改成随机分布:
model.component("comp1").mesh("mesh1").create("imp1", "Import"); model.component("comp1").mesh("mesh1").feature("imp1").set("source", "file", "clay_perm.csv");结果渗透路径立马变得歪七扭八,跟树根分叉似的。这说明微观结构对宏观现象的影响远比我们想象的大,搞环境评估的朋友们可长点心吧。
最后吐槽下硬件消耗,这破模拟把我32G内存的机器跑得风扇狂转,建议各位跑大型模型前先备好冰可乐和降噪耳机。不过看着那些动态扩散的等高线图,还是挺有成就感的——至少比养电子宠物有意思多了对吧?