做地下工程仿真这些年我越来越觉得“注浆”这件事数值化起来特别有意思。浆液在岩体裂隙里走多远、往哪个方向走、能不能把裂隙填满这些问题的答案往往不是经验公式能直接给的。随着施工精细化要求提高用COMSOL做三维离散裂隙注浆模型把浆液扩散过程在计算机里“跑”出来已经成为注浆方案设计和现场参数优化的一个有效工具。这篇内容我先从模型定位聊起再讲几何搭建、参数计算、物理场设置和常见坑尽量做到从零开始也能照着走通一条路。1. 模型定位与整体设计思路1.1 离散裂隙模型和连续介质模型的本质区别在岩土工程里摸爬滚打久了都会遇到一个基础问题岩体到底该当成什么来算早期很多渗流分析直接把岩体等效成连续介质给一个等效渗透系数。这在风化层、均质土体中问题不大但一遇到裂隙发育的硬岩就露馅了。原因是裂隙岩体的渗透特性极度不均匀水或浆液绝大部分沿着闭合裂隙走岩块本身渗透率极低。我用过某工程的数据岩块渗透系数只有10⁻⁹ m/s量级而一组张开裂隙的等效渗透系数可以高出4个数量级。这种差异意味着浆液的流动路径不是均匀推进的而是沿着裂隙网络形成所谓的优势流通道。离散裂隙模型DFN正是为了处理这种非连续性而生的。它把裂隙视为控制流体流动的主体几何岩块可以忽略或者仅作为低渗介质处理。COMSOL里的三维离散裂隙注浆模型核心就是把每一条裂隙用真实的三维空间位置、产状和开度来描述然后在这个离散裂隙网络上求解浆液流动与扩散。相比连续介质模型它至少有三个明显优势。第一个优势是能反映裂隙产状导致的各向异性。实际岩体里的裂隙往往具有主导方向比如顺层裂隙、陡倾节理二维剖面根本看不出空间连通性。第二个优势是能捕捉交叉裂隙对浆液的汇聚和分流作用。这个在帷幕灌浆时尤其重要浆液在交叉点附近会产生复杂的压力重分布直接决定扩散形态。第三个优势是能直观输出浆液的空间扩散范围而不仅仅是一个抽象的“扩散半径”数值这对现场布孔和效果评价更加友好。当然代价也很明确建模工作量、几何处理难度和计算资源都上了一个台阶。正因如此不是所有注浆问题都需要上三维离散裂隙模型。我的习惯是如果研究对象是均质土层、砂层或者裂隙极发育且统计均匀的破碎带等效连续介质更实用如果面对的是硬岩中的构造裂隙、层面裂隙或者单条大裂隙主导的渗漏通道再懒也得把离散裂隙模型捡起来用。1.2 三维模型解决了二维模型解决不了的问题我身边不少同事一开始图省事用二维剖面去模拟注浆扩散。二维模型确实简单、快但它有一个根本缺陷裂隙产状在剖面图里只能展示与剖面的交线裂隙之间的三维连通关系完全丢失。举个我在模拟中遇到过的例子两组裂隙在剖面上看起来互不相交实际上在空间上通过第三个方向的小裂隙搭接成了一个连通网络。二维模型算出来浆液扩散范围很小三维模型才发现浆液能绕过岩块“抄近路”沿着空间裂隙链走得很远。三维模型的第二个优势体现在“重力效应”的准确表达。注浆浆液密度通常高于水压力梯度、重力项、裂隙倾角三个因素共同决定扩散方向。二维模型如果剖面方向不对重力方向会被投影成错误的分量导致浆液“往高处跑”的离谱结果。三维模型则不存在这个问题重力方向、裂隙产状、注浆孔位置都能如实设置。第三个优势是对于注浆孔群的优化设计。帷幕灌浆、超前预注浆都涉及多个孔之间的相互影响孔距多大、浆液是否会搭接成一个连续帷幕这种问题本质上是三维裂隙网络的渗流路径问题。COMSOL三维模型可以直接在模型里放多根注浆孔查看浆液扩散是否搭接比二维模型平推要准确得多。正因为这些原因我在做注浆数值模拟时只要裂隙系统是三维空间分布的都会优先考虑三维模型哪怕前期准备工作多一些。1.3 模型在工程中的典型应用场景三维离散裂隙注浆模型不是实验室里的玩具它在工程中的应用场景相当明确。以水利水电工程为例坝基帷幕灌浆是最典型的使用场景。坝基下往往存在多个裂隙优势带灌浆要做多久、孔距设计成多少、灌浆压力怎么选都可以先用模型预演找到“扩散效果”和“浆材浪费”之间的平衡点。隧道与地下工程施工中超前注浆堵水也很适合做这个模型。预测高压富水裂隙带在开挖面前方的扩散填充情况帮助确定注浆段长度和注浆孔数量。我见过比较成功的做法是把超前地质预报的裂隙出水点和模型结果对照把模型修正后再指导现场调整注浆参数效果比纯靠经验好很多。矿山防治水、边坡治理中的卸压注浆、地面沉降控制中的充填注浆这些场景也都绕不开裂隙中的浆液扩散路径问题。此外这个模型在科研领域的用途更大。比如研究不同流变特性浆液在复杂裂隙网络中的扩散规律、浆液前沿的波前形状与压力衰减关系、注浆压力对裂隙开度的动态扩展影响等都属于当前岩土注浆理论的前沿问题。可以说三维离散裂隙注浆模型在某些时候不是“锦上添花”而是解决问题的必要工具。2. 建模前必须搞清楚的五个基础问题2.1 裂隙几何从哪来实测统计与随机生成路线无论多漂亮的物理场设置第一步永远是裂隙几何。在COMSOL里做三维离散裂隙模型我通常用两种路线获得几何。第一种路线是基于实测数据的统计模拟也是最贴近工程的路线。通过钻孔电视、地质编录、露头测绘获取裂隙的产状、迹长、间距、开度和充填情况。把这些数据整理成统计分布产状常用Fisher分布描述方向集中度迹长和直径常用负指数分布或对数正态分布开度常用负指数分布。然后在建模软件里按分布随机抽样生成一个满足统计特征的裂隙网络。地质统计界管这个叫离散裂隙网络生成。值得注意的是这种方式生成的网络在统计性质上合理但不会和具体某条真实裂隙完全一致所以模型的定位是预测“大概率规律”而不是复刻某个具体工程。第二种路线是确定性建模。如果现场只有几条主控裂隙或者已经通过物探、示踪试验确认了主要渗漏通道就直接把这几条裂隙按实测坐标和产状建立出来。这种情况模型更接近真实参数反演也更有意义。在COMSOL里几何部分可以用圆盘、多边形面或者扫掠面描述裂隙再通过交运算和并运算把它们组合到岩体域里。说实话COMSOL本身的几何内核处理复杂随机裂隙并不算它的强项裂隙条数一多布尔运算容易变得很慢。我的建议是裂隙条数控制在几十条级别以内超过这个量级就优先考虑从外部DFN软件导出差集几何。2.2 浆液怎么描述宾汉姆、幂律与牛顿本构的选择注浆模拟里最容易被忽视、却最能影响结果的就是浆液本构。很多人一上来就按牛顿流体处理设置一个黏度这在小规模单裂隙模拟里可以接受但水泥基浆液的实际流变特性严格说并不是牛顿流体。水泥浆液的流变行为一般用宾汉姆模型描述总应力由屈服应力和塑性黏度两部分构成。宾汉姆流体的特点是当剪切应力低于某个阈值时浆液根本不会流动这就是为什么现场能看到浆液在一定扩散半径后停下来形成“浆脉末端”。而化学浆液、改性水玻璃这类则常用幂律模型黏度随剪切速率变化。低黏度聚氨酯浆液在某些条件下又接近牛顿流体。在COMSOL里实现宾汉姆流体并不复杂。可以在流体材料属性里自定义动态黏度表达式把剪切速率代入同时设置一个很小的正则化参数避免剪切速率趋于零时黏度无限大。我的实际经验是这个正则化参数取值要小心太大则浆液屈服特性被抹平太小又容易让求解器在低速区挣扎。一般取一个比现场剪切速率特征值小10倍的数值既不破坏物理性又保证计算稳定。2.3 流动与扩散怎么耦合从简化到精细的路线建立好裂隙几何之后接下来的问题是浆液和水在裂隙里是怎么流动、怎么互相推进的这里有两个层次的做法我根据项目精度要求选择不同路线。最简化但不失实用的做法是“等效黏度法”把浆液和水都作为一种流体它们的混合区域用一个标量场表示黏度随这个标量在水的黏度和浆液黏度之间平滑变化。在COMSOL里常借助系数型偏微分方程或者稀物质传递模块引入一个浓度/体积分数场速度场与黏度场双向耦合。这样算出来的扩散趋势是合理的但没有严格捕捉到浆液和有明确界面的形态扩散边界会有一定的模糊带。更精细的做法是两相流界面追踪也就是水平集方法或相场方法。浆液和水作为两相界面由一个水平集函数显式追踪界面处的表面张力和黏度突变都可以刻画得非常清楚。COMSOL自带“两相流水平集”多物理场接口不过在三维裂隙网络上用起来并不轻松。水平集方程要求非常精细的网格和较小的对流时间步计算开销比等效黏度法大得多。就我实际使用经验当研究重点在于浆液扩散范围、注浆压力衰减、孔距优化这类工程问题时等效黏度法足够可靠如果研究目标是浆液前沿形态、水浆界面稳定性这类理论问题时才值得上水平集。2.4 注浆孔的简化方式注浆孔在裂隙网络里的几何尺寸与裂隙跨度相比通常很小直接在几何里画出真实的钻孔往往导致网格和几何处理的巨大浪费。我在建模时会把注浆孔简化成三种形式之一。第一种是点源/点汇适用于注浆孔被简化为一个空间点压力源半径远小于模型尺度。这种最简单边界条件设置方便但无法反映孔口附近的高压集中效应适合远端扩散分析。第二种是线源/短段圆柱面适用于裂隙与钻孔交叉段把钻孔与裂隙相交的那一小段设为一个压力面这是最常用的折中方案。第三种是圆柱腔体如果要看钻孔周围岩体裂隙的局部饱和和劈裂扩展就得把钻孔实体画出来配合结构力学和损伤模型这个就复杂一些了。边界条件上注浆孔可以给恒定注浆压力也可以给恒定体积流量。这两个条件得到的扩散速率差别很大。工程中注浆泵往往按流量控制但泵前压力会随浆液扩散阻力增加而升高。模拟时我通常先按压力边界试算看流量曲线再按实际泵体现流量修正。2.5 网格策略与计算代价的权衡三维裂隙模型最大的硬件瓶颈在网格。试想一条裂隙开度只有0.5毫米而裂隙网络延伸几十米尺度跨越很大。如果用实体网格去画每条裂隙网格单元数量将爆炸质量还差。正确做法是利用COMSOL中的“裂缝流”接口把裂隙作为二维面处理开度作为该面的一个属性而不是把裂隙建造成一个三维薄层实体。这样裂隙就用一层三角形表面网格离散既保留了流动求解的精度又极大降低了网格数量也是在COMSOL里做离散裂隙模型的关键技巧。即便如此裂隙交叉处的网格处理也不容忽视。多条裂隙面相交会在相交线上形成复杂的拓扑COMSOL在这些位置布置网格时如果处理不当会出现畸形单元和局部奇异性。经验是把裂隙面在交叉线处切分干净使交叉线成为网格边而不是让网格单元跨过交叉线。这需要用“虚拟几何操作”预先处理好装配这几步虽然费时间但对后续求解收敛和精度都很关键。3. 实操从几何搭建到结果后处理的完整流程3.1 三维裂隙网络的几何生成与导入实操我习惯用脚本化方式生成裂隙几何这里分享一条可行路线。先根据统计分布生成圆盘裂隙的圆心坐标、法向量、半径和开度然后用COMSOL的“几何零件”功能逐一创建圆盘并做并集。圆盘之间相交会产生裁剪边这一步布尔运算最消耗时间裂隙条数一多建议尽量简化。如果从外部DFN工具生成裂隙网络通常可以导出为DXF、STEP或STL格式。COMSOL支持直接导入这些几何导入后需要检查是否存在自由边、重叠面或退化平面。我遇到过某次导入后裂隙面与岩体边界没有完全闭合导致后续定义边界条件时选不到面。解决办法是在导入几何后执行一次“几何修复”操作或者手动用“删除”“合并”把误差面处理掉。建立岩体外边界时建议做成一个简单的立方体或长方体边长比裂隙网络的延伸范围略大一些。岩体域本身在离散裂隙模型中通常不参与流动计算但保留它可以方便地施加上边界水头或应力边界也能让后处理时显示应力云图和裂隙域之间的空间对应关系。物理场接口的选择上最常用的组合是“达西定律”接口加“裂缝流”特征。达西定律接口负责三维岩块的低渗渗流而裂缝流特征把每条裂隙看作二维边界开度、渗透率等参数通过该特征指定。在COMSOL的较新版本里裂缝流特征很容易添加到达西定律物理场下这条路径最省心。3.2 关键参数的量级估算动手前先算清底数建模最怕的不是调不收敛而是模型算完才发现参数量级离谱。所以我在做任何注浆模拟前都会先用几个手算公式把底线摸清。第一个经验是立方定律。单条裂隙的流量与开度的三次方成正比裂隙越长流量越大。具体地单位宽度流量可以用开度、黏度和压力梯度的关系估算。开度相差一倍流量会差八倍这也解释了为什么注浆模拟里裂隙开度参数极其敏感错一个数量级结果完全不可用。第二个要算的是雷诺数用来确认裂隙流动处于层流范畴。一般裂隙渗流速度很低雷诺数远小于临界值因此达西定律或层流假设成立。但如果注浆压力特别高、开度很大局部流速可能很高这时要考虑使用惯性项或更精细的流动方程。第三个必算的是体积守恒扩展半径用于预估扩散范围是否合理。假设某裂隙网络的孔隙体积主要由裂隙有效体积组成注浆体积应等于扩散范围内裂隙体积增加量。做一个轴向扩散的简单估算注浆体积等于圆盘面积乘以平均开度。我试过一次预注浆设计注浆流量恒定开度取实测统计均值按公式预估30分钟后扩散半径在4米左右。可现场注浆量按照设计只推进了约2.5米回查原因是大裂隙开度分布不均、浆液部分沿单一优势裂隙窜流导致主方向半径偏小、局部窜浆很远。这个预估值虽然不精确却让我立即意识到“均匀扩散”假设有问题从而及时调整了注浆参数。第四个算法是宾汉姆浆液的止扩半径估算。屈服应力会导致浆液流动前方出现“停滞区”通过压力梯度和屈服应力的对抗关系可以估算出最大扩散半径。这里有个容易忽视的结论如果注浆压力很高、裂隙开度较大止扩半径往往远大于裂隙网络的几何边界说明屈服应力根本挡不住浆液扩散范围主要由裂隙网络体积和注浆量决定。反之低压或者高屈服应力浆液扩散范围才会被流变特性直接控制。这个判断决定了后面模型里是否需要精细刻画流变性能省很多事。3.3 物理场设置与求解器配置的实操要点以COMSOL中一套典型的“达西定律裂缝流系数型偏微分方程”组合来说明实操步骤。先建立达西定律接口岩块域设置为低渗透率基质裂隙边界添加裂缝流特征。裂缝流特征里需要指定裂隙开度、裂隙固有渗透率。固有渗透率可以由立方定律得到渗透率等于开度平方除以12。这个公式是把裂隙视为两块平行板之间的流体推导出来的开度用毫米还是米表示要看模型单位。接下来建立浆液扩散场。我常用系数型偏微分方程方程形式为时间导数项加对流项等于零相当于一个被动标量被速度场带着走。这个标量可以理解为浆液的体积分数初始值为0注浆源处设为1。裂隙网格上求解这个对流方程如果网格相对粗糙会带来明显数值弥散扩散前沿会模糊。此时可以小幅加入各向同性扩散项把数值弥散限制在可接受范围。需要注意扩散项加得越多前沿越模糊所以尽量用小值。速度场与浆液体积分数的耦合通过黏度实现裂隙中的流体黏度随浆液体积分数在水的黏度和浆液黏度之间平滑切换。这里建议使用指数插值或者调和平均不要用简单线性切换否则黏度突变处容易引发收敛震荡。我在实际中调过很多次最后固定使用一种“指数过渡”形式界面处的等效黏度变化平滑而不过分突兀配合时间步长控制收敛稳定得多。时间步长选择上遵循一个朴素的准则每个时间步内浆液前沿移动距离不超过网格尺寸。可以用典型流速乘时间步长与网格尺寸比较。我通常先设一个初始小步长让求解器按CFL条件自适应调整。COMSOL的瞬态求解器默认自动选择BDF时间积分如果收敛困难可以打开“严格”模式并降低初始步长。注浆源的处理上我通常采用分阶段加载先让清水流动达到稳态作为初始条件再瞬时把源切换为浆液注入。这种“先稳态再注入”的操作能显著降低启动阶段的数值振荡值得坚持使用。3.4 后处理扩散半径、压力分布与扩散形态分析模型求解完之后后处理环节直接决定你能不能向各方讲清结果。最先要看的是浆液体积分数等值面。在COMSOL结果节点里创建等值面设置值为0.5就能看到浆液和水交界面也就是扩散前沿的三维形态。把这个面用透明度调到合适程度叠加上裂隙网络骨架线框就能一眼看出来浆液优先走了哪些裂隙哪些裂隙被绕过。测量扩散半径时不建议用肉眼读数。我更习惯用积分计算先在全模型上对浆液体积分数积分得到总浆液体积然后用“填充-阈值”“测量”等操作查看浆液区域的最大外接尺寸。如果场地裂隙网络比较规则也可以直接在某条典型裂隙面上画一条测线提取该测线上一系列点的体积分数值用阈值判断扩散边界位置。这种方法在处理复杂网络时最实用能给出沿指定方向的扩散距离。压力分布图要结合不同时间步来看。初始阶段孔口附近压力高远端压力低随着浆液扩散压力梯度逐渐平缓。如果看到某个交叉裂隙处压力比周边异常偏高往往说明该处存在几何狭窄区域或网格缺陷需要回到几何检查。流出边界处还可提取出口流量时间曲线和现场流量记录对比校验模型参数是否与现场吻合。这是我用来“校准”模型的主要手段。4. 常见问题排查与经验教训4.1 求解器不收敛的五个典型原因如果用一句话总结我调试COMSOL注浆模型的经验“不收敛是常态收敛是调出来的”。典型原因不外乎以下几种。第一黏度突变。浆液界面处黏度从水的黏度跳到水泥浆的黏度数值上产生强非线性。对策是改用平滑插值并限制每一步的体积分数变化幅度。第二几何网格中存在退化单元。裂隙面交叉处、切分不净的位置容易出现极小角三角形导致局部压力振荡。对策是在网格划分前做几何清理交叉线处手动指定细网格。第三边界条件冲突。比如注浆孔附近的流量边界和远处的压力水头边界距离边界太近形成矛盾。对策是让边界距离足够远必要时扩大岩体域尺寸。第四时间步长过大。尤其是水平集或对流扩散类方程时间步长超过稳定条件就会发散。对策是用CFL条件估算上限再乘一个安全系数。第五初始条件不物理。比如裂隙里初始就设置压力等于注浆压力会让瞬态求解一开始就剧烈调整。对策是先跑一个稳态流场再把注浆条件打开。4.2 浆液前沿“锯齿”与数值弥散的应对浆液前沿在模拟结果里出现锯齿状、毛刺状分布是很多人都见过的问题。本质上是对流项在高斯型网格上的数值弥散造成的。锯齿本身并不代表真实物理现象尤其在高注浆压力下界面处流速梯度大更会放大这种伪影。我的处理办法有几个层次。最基础的是加密裂隙面网格尤其在前沿经过的区域。加密后数值弥散下降但计算量上升。更经济的方法是引入一定的流线扩散相当于人为添加垂直于压力梯度方向的平滑作用。这个数值修正的幅度有一个度加多了会把真实的前沿尖角抹平让扩散半径看起来比实际小。我的经验是先用默认值试算对比不同扩散系数的结果选取对工程指标影响最小的一组。另一个更接近本质的手段是改用高阶离散格式。COMSOL的对流项默认有限元格式容易让前沿存在振荡。可以用流线迎风稳定化方法缓解。但这对网格质量要求更高所以一般我做精细化方案时才上这个选项。4.3 几何和网格引发的隐性错误有些错误不是结果发散而是结果看起来合理但实际是错的这种最危险。比如裂隙开度输入时漏了单位换算毫米当米输渗透率直接放大百万倍模拟结果却依然是一张漂亮的扩散云图。所以我在提交计算前会做一道单位复核裂隙开度到底用了什么单位渗透率是否在预期量级。还有一种隐性错误来自裂隙面在交叉处没有真正连通。模型里两条裂隙看上去交叉了但网格划分时交叉线没有成为公共边流体在拓扑上无法从一条裂隙流进另一条。这类问题从压力云图看不出来但从速度矢量上能看到裂隙交叉处明明高压力差却没有流量。检查方法很简单在裂隙交叉线附近看速度场是否连续。如果发现流量不贯通回到几何装配把所有裂隙面执行一次“形成联合体”确保公共边存在。网格数量不是越多越好。裂隙交叉处网格加密有益但通体加密会让计算时间成倍增加。我习惯的做法是交叉线周边加三四层局部细化其余区域保持均匀网格。这个策略在多个算例中表现稳定结果与全加密版本误差在可接受范围耗时却少一半以上。4.4 模型与现场“对不上”时的排查方向最后讲一个所有做数值模拟的人都会遇到的尴尬模型计算结果和现场注浆记录对不上。这种时候不要急着怀疑模型失真先按几个方向排查。第一个方向是注浆量体积是否守恒。把模型中注入的总浆液体积和现场泵送记录对比。如果模型体积远小于现场记录说明有浆液沿模型外未被离散的裂隙跑了如果远大于记录说明模型里的裂隙孔隙度或开度偏高。第二个方向是检查扩散范围与现场开挖揭示的浆脉分布是否一致。模型预测的扩散半径和现场真实浆脉差异大优先怀疑裂隙网络密度和连通度统计参数取错了而不是流变性选错了。岩体里主导浆液走向的是裂隙网络的拓扑结构流变性只在末端影响边界形态。第三个方向是检查压力响应趋势。现场注浆压力随时间缓慢上升模型压力却纹丝不动很可能是模型里没有考虑浆液引起的裂隙开度变化或者浆液滤失导致的堵塞。裂隙开度随压力增加和浆膜形成导致的开度减小这两者都能从压力曲线上看出端倪。如果模型完全不考虑这些耦合效应就只能定性对比不要往定量方向死磕。我在实际使用中最大的体会是这个模型的价值不在于把浆液扩散算得“分毫不差”而在于把裂隙控制下的扩散规律可视化出来帮助工程师快速判断风险区、优化注浆方案。它承担的角色类似于一台“岩体注浆预演沙盘”。做之前先用手算公式摸清量级做过程中紧扣几何与拓扑做之后不忘回归现场数据校验这套流程走下来模型的参考价值就会比绝大多数纯经验判断高出一个档次。
阅读完成 · 觉得有帮助?