离散裂缝网络中单相流计算案例解析
comsol案例离散裂缝网络中的单相流计算地下岩层中的裂缝网络就像毛细血管一样控制着流体的运移路径。在COMSOL里玩转裂缝流动模拟最带劲的操作莫过于用低维元件实现高维空间的降维打击——比如用二维线段描述三维空间的裂缝系统。先甩段定义裂缝网络的硬核代码import pyvista as pv fractures pv.PolyData() for _ in range(50): center np.random.rand(3) * 10 normal np.random.randn(3) radius np.random.uniform(0.5, 2) fractures pv.Plane(centercenter, directionnormal, i_sizeradius, j_sizeradius)这段Python代码用蒙特卡洛方法生成随机分布的裂缝面每个裂缝面的位置、方向和尺寸都是随机的模拟天然裂缝系统的无序性。注意这里的裂缝被处理为二维平面实际在COMSOL中会嵌入到三维计算域里。在COMSOL的物理场设置中裂缝的流动方程需要特殊处理。看这个达西定律的魔改版本% 裂缝域达西流设置 physics(darcy, DarcyLaw, geom) set(physics, d, {rho*g 0 0}, ... % 重力项 eta, mu, ... k, k_fracture*eye(3), ... spf, p);这里把渗透率张量k设置为裂缝方向的主渗透率相当于给裂缝开了个外挂——沿着裂缝面的渗透率可能是基质岩石的1000倍而垂直方向则直接按裂隙宽度折算。这种各向异性设置让流体在裂缝里飙车在岩石基质里龟速爬行。comsol案例离散裂缝网络中的单相流计算网格划分是这类模拟的生死关分享个骚操作// 裂缝边缘加密网格 model.mesh.create(fractureMesh, geom); model.mesh(fractureMesh).feature.create(size1, Size); model.mesh(fractureMesh).feature(size1).set(hauto, 3); model.mesh(fractureMesh).run;在裂缝边缘用三级自适应加密相当于给裂缝边界装上8倍镜。这样既捕捉到流速突变又避免整个模型网格量爆炸。记得在裂缝交汇处额外撒些种子点否则流速场在交叉口会像没信号的导航一样乱窜。后处理阶段有个酷炫的操作——用流线可视化裂缝的主导作用// 流线生成器 Streamline streamline postprocessing.createStreamline(); streamline.setField(velocity); streamline.setSeedPoints(new double[][]{{0,0,0}, {10,10,10}}); streamline.setMaxSteps(1000);生成的流线会像贪吃蛇一样优先钻进高导流裂缝完美呈现裂缝网络的渗流高速公路。对比下基质主导的流动模型会发现传统模型就像在早高峰的北京五环而裂缝模型简直是秋名山排水渠过弯。调试这种模型时最常撞见的是收敛性问题。这时候别急着调求解器先检查裂缝单元的渗透率是否设置了合理的量级差建议用1e-12到1e-15 m²区分基质和裂缝。另外记得给压力边界条件加个渐变过渡否则初始残差能把你显卡烧出焦香味。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2413951.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!