COMSOL相场方法模拟裂缝多孔介质中的渗吸 提供COMSOL中基于相场方法模拟裂缝多孔介质中的渗吸算例,可用于学习简单几何模型和复杂几何模型中的两相流动模拟,比较采用相场方法守恒和不守恒条件下计算结果的差异,对比水平集方法和相场方法
相场方法这两年在地下水渗流模拟里越来越火,尤其是处理裂缝网络这种糟心几何。今天咱们拿COMSOL做个渗吸实验,看看油水两相在裂缝里怎么较劲。先别急着建复杂模型,从条状裂缝开始练手。
打开COMSOL新建多物理场,选上相场和达西流模块。核心代码就藏在相场传输方程里:
phi_t + u*phi_x = gamma*(epsilon^2*laplacian(phi) - (phi^3 - phi)/epsilon^2)这里的phi是相场函数(0代表水,1是油),gamma控制相界面移动速度。重点是这个epsilon参数,直接决定界面模糊层的厚度。新手容易设太大导致物理失真,建议取网格尺寸的1/2到1/3。
在简单直裂缝模型中,边界条件设置有个坑要注意:
// 左端水相注入 phi_left = 0 // 右端开放边界 n·grad(phi) = 0达西速度场用Forchheimer方程会更贴近实际,特别是当流速较高时:
rho*(u·grad(u)) = -grad(p) + mu*laplacian(u) - F*|u|*u跑完仿真能看到典型的手指状渗吸前沿(图1)。这时候切换守恒模式,在相场方程里加上补偿项:
phi_t + div(phi*u) = ... // 原方程右侧保持不变对比饱和度分布会发现,非守恒条件下总质量会漂移约3%,这在长期模拟中误差累积很要命。
转到复杂天然裂缝网络,几何导入要用到STL处理:
importGeometry('fracture_network.stl');网格划分建议用自由四面体+边界层,在裂缝交叉处局部加密。这里有个骚操作——在相场参数里动态调整epsilon:
epsilon = 0.1*minCellSize // 随网格自适应变化对比水平集方法,相场的优势在于自动处理拓扑变化。但代价是计算量增加约40%。有个取巧的办法:在预饱和区域关闭相场计算,用混合维度耦合节省资源。
最后上干货:当裂缝开度小于1mm时,毛细管力项必须显式处理:
p_c = sigma*curvature + (phi-0.5)*sqrt(2*sigma/epsilon)否则会出现非物理震荡。调参时建议固定毛细数Ca=μU/σ,同时扫描黏度比参数,能复现经典的Imbibition速率曲线。
算完别急着关软件,用后处理器的粒子追踪功能做个流动动画,绝对能让论文图表提升一个档次。记住,相场模拟七分在调参,遇到不收敛先查界面张力项的量纲,十次有八次是单位制没统一惹的祸。