COMSOL 三维离散裂隙注浆模型。 基于粘度空间衰减的宾汉姆流体注浆。 裂隙采用随机分布的圆...

张开发
2026/4/16 1:28:09 15 分钟阅读

分享文章

COMSOL 三维离散裂隙注浆模型。 基于粘度空间衰减的宾汉姆流体注浆。 裂隙采用随机分布的圆...
COMSOL 三维离散裂隙注浆模型。 基于粘度空间衰减的宾汉姆流体注浆。 裂隙采用随机分布的圆盘模型恒压注浆。裂隙注浆数值仿真这活儿说难不难说简单也够折腾。最近在COMSOL里搭了个三维注浆模型用宾汉姆流体模拟水泥浆液还考虑了粘度随扩散距离衰减的特性。最有趣的是裂隙网络直接用随机圆盘生成——搞工程的都知道天然裂隙哪有什么整齐划一的排列。先说说随机裂隙生成这茬。用Method编辑器直接撸代码生成裂隙坐标比手动建模快多了。下面这段循环结构每次运行都能生成独一无二的裂隙系统for (int i 0; i numFractures; i) { double x Math.random()*domainLength; double y Math.random()*domainWidth; double z Math.random()*domainHeight; double radius minRadius Math.random()*(maxRadius-minRadius); double theta Math.random()*Math.PI; double phi Math.random()*2*Math.PI; model.component(comp1).geom(geom1).create(diski, Disk); // 设置圆盘参数... }这里有个骚操作通过theta和phi两个随机角确定裂隙面朝向配合半径随机生成能造出空间任意取向的圆盘裂隙。建议把最大裂隙尺寸控制在计算域尺寸的1/5左右不然网格划分时容易翻车。重点来了——宾汉姆流体的本构方程。COMSOL自带的非牛顿流体模块其实藏了个彩蛋在材料属性的「黏度模型」里选自定义直接输入分段函数tau0 15[Pa]; // 屈服应力 mu0 0.5[Pa·s]; // 初始粘度 k 0.1[1/m]; // 衰减系数 eta_eff if(taumagtau0, 1e6[Pa·s], mu0*exp(-k*sqrt(x^2y^2z^2)) tau0/taumag)这个exp衰减项模拟的是浆液在裂隙中运动时的水化反应。注意if语句处理了剪切应力低于屈服应力时的数值稳定性问题相当于给静止流体加了个超大粘度。不过实测发现当压力梯度接近临界值时收敛速度会明显下降这时候把求解器的相对容差调到0.01反而更稳。COMSOL 三维离散裂隙注浆模型。 基于粘度空间衰减的宾汉姆流体注浆。 裂隙采用随机分布的圆盘模型恒压注浆。边界条件设置最坑的是入口恒压。别直接用压力边界建议用弱约束形式的法向应力条件nx*test(p) ny*test(p) nz*test(p) p0*test(p)这样处理能避免入口流速突变引发的数值震荡。监测注浆半径时可以自定义探针检测浆液前锋位置当流体体积分数达到0.1的位置即判定为扩散边界。最后给个实战建议计算到后期压力场会出现蚯蚓状的分形结构这是随机裂隙网络导致的流道竞争现象。想要复现这种现象网格尺寸至少要小于最小裂隙半径的1/3不过这样算力消耗会指数级增长。折中方案是用自适应网格在压力梯度大的区域自动加密——COMSOL的自动重剖分功能这时候真能救命。模型跑通那天下班前顺手做了个参数扫描发现当粘度衰减系数超过0.15时注浆范围反而开始缩小。这反直觉的现象后来在论文里找到解释原来是高衰减率导致浆液过早失去流动性。所以说数值仿真有意思的地方就在这儿总能给你整点意想不到的活儿。

更多文章