FLAC3D模拟巷道穿越断层带:开挖、锚固注浆与FISH监测全流程

发布时间:2026/10/10 13:31:43
FLAC3D模拟巷道穿越断层带:开挖、锚固注浆与FISH监测全流程 搞岩土工程的人应该都有体会面对一条穿越断层带的巷道光靠经验和工程类比去做支护设计心里总是不踏实。这次想分享的就是我在一个巷道开挖与锚固注浆项目里用FLAC3D做数值模拟的完整过程——从三维建模、分步开挖、锚杆与注浆支护施加到用FISH编写断层监测代码盯住断层带的响应整套流程怎么串起来、参数怎么取、代码怎么写、坑在哪里一次讲完。项目本身要解决的核心问题是巷道穿越断层破碎带时的稳定性预判以及锚固注浆联合支护方案的量化验证。这篇内容适合刚开始接触FLAC3D做岩土模拟的工程师也适合正在做支护方案比选、不知道怎么下手的同行。1. 项目到底做了什么把“开挖—支护—监测”串成一条链路1.1 为什么选FLAC3D而不是有限元软件很多新人会问做巷道开挖为什么不用ABAQUS或者ANSYS这类有限元软件。问题就出在“破坏”两个字上。巷道开挖之后围岩不是永远处于弹性状态巷道周边会产生塑性区岩体进入屈服之后力学行为是高度非线性的。有限元软件处理这类问题不是不行但每次单元屈服都要重新调整整体刚度矩阵迭代起来很容易不收敛尤其是断层破碎带这种参数很低、破坏范围大的区域经常把计算卡死。FLAC3D走的是另一条路。它基于有限差分法和显式时间推进每个单元只跟自己的邻居交换力和变形不需要组装整体刚度矩阵。你把整个模型想象成一堆相互堆叠的沙粒外力作用下每颗沙粒只需要调整跟周边沙粒的接触状态整个系统就能逐步演化到稳定或者破坏。这个特性让它特别适合模拟岩土体的塑性流动、渐进破坏和应变软化。实测下来同样是穿越断层带的巷道开挖模型FLAC3D的收敛稳定性和对破坏过程的描述明显比纯有限元软件舒服。1.2 断层破碎带对巷道的威胁项目要解决的核心矛盾断层破碎带的核心问题就是“弱”。破碎带的岩体被节理、裂隙切割内聚力和内摩擦角通常只有完整围岩的三分之一甚至更低抗拉强度几乎可以忽略。巷道开挖之前岩体处于三向受压状态断层带勉强还能稳定一旦巷道掘进到断层影响区原有的应力平衡被打破围岩应力重新分布巷道周边切向应力集中断层带两侧开始出现剪应力差上下盘就可能产生相对滑移的趋势。这个项目的场景非常典型一条宽约3米的断层带以60度倾角斜穿巷道掘进方向巷道掘进到断层前5米就要开始准备支护。我需要搞清楚三件事巷道的顶板下沉和帮部移近量大概是多少断层破碎带在开挖扰动下会不会出现大范围塑性区贯通锚固注浆联合支护能不能把变形和破坏控制住。这三个问题恰恰是现场支护设计最核心的决策依据。1.3 整体分析流程从建模到监测的一整条链路项目最终跑通的完整链路分成七个环节每一步都有它存在的理由建立三维模型包含围岩、巷道断面和断层带分组初始地应力平衡恢复岩体在开挖前的真实应力状态清零位移和速度场确保后续读取的位移纯粹来自开挖扰动模拟分步开挖按实际掘进循环推进施加锚杆cable单元和注浆加固圈参数运行FISH监测代码动态记录断层带区域的位移和状态变化后处理分析生成云图、历史曲线和对比数据。这里特别要强调第2步和第3步。初始地应力如果没平衡到位后面所有位移数据都是空中楼阁清零位移忘了做算出来的位移会叠加地应力平衡阶段的沉降值可能让你误以为巷道变形量过大。这两个动作我在每个项目里都会反复检查。2. 模型搭建和参数选取最容易被忽略的设置细节2.1 几何模型与网格划分尺寸、边界和分组模型尺寸不能拍脑袋定。巷道开挖会引起周边围岩应力重分布影响范围通常可以达到巷道跨度的5到10倍。如果模型边界离巷道太近边界约束会“帮”巷道分担变形导致位移结果偏小。我的习惯是巷道左右两侧各取30米以上上下各取25米左右走向方向取30米整体模型尺寸大约40×40×30米。这个范围既能保证边界效应可以忽略又不至于让网格数量爆炸。巷道断面用的是矿山最常见的直墙半圆拱宽5米墙高2.5米拱高2.5米总高度5米。网格划分上巷道周边和断层带交汇区域必须加密最小网格尺寸控制在0.5到1米远处的网格可以放到3米。断层带的网格也要单独控制因为后续要监测断层带内每个单元的响应网格太粗统计结果没有参考意义。分组这一步很多人不重视实际上它是整个模型管理的基石。我把模型分成三个grouprock代表正常围岩fault代表断层破碎带rein代表注浆加固圈。分组命名要统一大小写都要保持严格一致不然后面施加支护、修改参数、写FISH代码统计区域时经常因为名字对不上而找不到对象。2.2 材料参数围岩、断层的赋值逻辑摩尔-库伦模型是岩土模拟的默认选择FLAC3D需要输入的参数是密度、体积模量、剪切模量、内聚力、内摩擦角和抗拉强度。注意这里有个坑FLAC3D不直接让你输入弹性模量和泊松比需要先换算。公式很简单K等于E除以三倍的一减两倍泊松比G等于E除以两倍的一加泊松比。很多新手直接把E填进去算出来的变形量完全不对。项目中的材料参数我按现场地勘报告整理后做了简化大致取值如下材料密度kg/m³体积模量GPa剪切模量GPa内聚力MPa内摩擦角°抗拉强度MPa围岩25003.01.51.0300.5断层破碎带23001.00.50.25180.01注浆加固圈25003.51.81.5351.0断层带的内聚力和摩擦角只有围岩的四分之一和五分之三左右这个弱化比例在断层破碎带模拟里是比较常见的做法。注浆加固圈的参数不是随便拍的它反映的是浆液把破碎岩体重新胶结之后的等效强度一般可以在原围岩基础上提高20%到50%具体要看浆液配比和注浆压力。参数敏感性方面我要多说一句断层破碎带的力学参数对计算结果的影响非常显著模型跑出来的结论对c和φ的变化极其敏感所以有条件的话现场必须做地勘取样试验不能只靠经验估计。2.3 支护参数锚杆cable单元和注浆加固的模拟方式锚杆在FLAC3D里用cable结构单元模拟它不是简单地把岩体“钉住”而是通过杆体与浆体界面的剪切力来传递荷载。这一点理解透了cable参数设置才有方向。我用的锚杆参数如下参数取值说明锚杆直径22mm常见螺纹钢锚杆弹性模量200GPa钢材标准值截面积3.8e-4 m²按直径换算浆液粘结刚度2.0e7 N/m/m控制杆体与岩体界面的力传递浆液粘结强度1.0e5 N/m控制界面剪切破坏起点间排距1.0m × 1.0m按现场支护设计cable参数里最关键的就是浆液粘结刚度它决定锚杆和岩体之间的力能不能传进去。如果这个值设得太低锚杆相当于悬浮在模型里拉不住围岩设得太高又可能让局部应力过度集中。我建议从现场锚固拉拔试验的数据反推没有试验数据时按上述量级起步再调整。注浆加固的实现方式有两种一种是在巷道周边单独生成一圈1.5米厚的加固圈区域直接赋予更高的材料参数另一种是把断层带受注浆影响范围内的zone从fault组重新标记为rein组然后修改参数。我在项目中用的是参数升级法操作简单对比不同注浆深度方案的效率高。注浆过程本身的浆液渗流和应力耦合效应不做精细模拟因为对支护设计验算来说参数升级法已经能回答“注浆之后能改善多少”这个核心问题了。3. 实操核心开挖、支护与断层监测代码实现3.1 三步走地应力平衡、分步开挖、支护施加第一步是地应力平衡。模型底部固定竖向位移四个侧面约束法向位移顶面不约束但施加覆盖层重力产生的应力。初始竖向应力按容重乘以埋深来计算水平应力用侧压系数乘竖向应力。侧压系数我取了0.9左右这个值来自现场原岩应力测试没有实测数据时一般取0.8到1.2之间做敏感性分析。平衡过程中我盯着最大不平衡力与初始不平衡力的比值降到千分之一以下才认为初始应力场平衡完成。这一步有个非常实用的经验如果模型同时包含断层带和巷道且断层参数很低直接整体平衡经常不收敛。我后来改成先把断层参数调到跟围岩一致跑完初始平衡再通过zone property把断层参数改回真实值然后少量solve几步让断层带的应力重新调整。这样做之后平衡问题基本消失断层带也不会在初始阶段就被拉坏。第二步是分步开挖。我模拟掘进机每次推进3米分5步开挖到穿过断层带。分步开挖比全断面一次开挖更接近现场实际工序计算结果也更稳定。开挖路径上第一步先把巷道端头掘到断层前3米位置暂停然后进行下一步的支护安装再继续向前掘进。每开挖一部分就solve若干步让围岩应力充分调整后再继续。第三步是支护施加。锚杆通过cable命令按1米间距逐排生成每根长度4米要保证断层破碎带区域内的锚杆端部能够锚固到稳定岩体中。注浆加固圈通过把巷道周边1.5米范围内的zone重新赋予rein组参数来实现。施加强度上我的顺序是先开挖到位、再补锚杆、最后改注浆参数这个顺序和现场“先锚后注”的工序是对应的。3.2 断层监测FISH代码怎么盯住断层带的变化这个部分是我项目里最花心思的地方。断层带监测不能只看云图云图只能反映最终状态无法告诉你断层带是在哪个开挖步骤突然变化的。我写了几段FISH代码从单点、区域、相对位移三个层面盯住断层带的响应。第一段是单点位移监测在断层带中心附近取一个代表点记录竖向位移; 断层带单点位移监测FLAC3D 7.0风格示意 fish define dispZ local p1 zone.near(15.0, 0.0, 9.0) ; 取断层带中心附近的zone local dz z.disp.z(p1) ; 7.0中取该zone竖向位移的写法 dispZ dz end history id 1 dispZ用zone.near取最近zone而不是直接取节点坐标是因为网格不一定在目标位置有节点取最近zone代表性强而且即使网格调整了监测点依然能取到值。如果你用的是6.0及更早版本位移字段的FISH函数名可能不同但思路完全一致对照一下手册就行。第二段是区域统计监测遍历断层带分组内所有zone统计平均位移; 断层带区域平均竖向位移监测 fish define faultAvgDisp local pz zone.list local sumD 0.0 local n 0 loop while pz ! null if z.group(pz) fault then sumD sumD z.disp.z(pz) n n 1 endif pz zone.next(pz) endloop if n 0 then faultAvgDisp sumD / n else faultAvgDisp 0.0 endif end history id 2 faultAvgDisp遍历zone的时候用zone.list配合zone.next效率比按坐标二重循环高得多。group名字的大小写、空格都要跟建模时完全一致否则统计结果永远是0。这段代码看起来简单实际调试时最容易栽在字符串比较上。第三段是断层上下盘相对位移监测这个最能反映断层的滑移趋势; 断层上下盘相对位移监测 fish define relativeDisp local up zone.near(15.0, 0.0, 12.0) ; 上盘监测点 local dn zone.near(15.0, 0.0, 7.0) ; 下盘监测点 local du z.disp.x(up) local dd z.disp.x(dn) relativeDisp du - dd end history id 3 relativeDisp上下盘的测点间距要结合断层倾角来选确保两个点分别落在断层两侧而不是同一盘。相对位移曲线一旦出现明显拐点说明断层局部滑移正在加速这时候必须停下来检查支护方案。history是自动每步记录的但我建议设置采样间隔比如每隔5步记录一次控制数据量。计算结束后可以用history write命令把历史曲线数据导出到文件里再用Excel或Origin画图。3.3 数据输出历史曲线和云图的整理方法很多模型跑完就结束了其实数据整理才是发现问题的地方。我的标准动作是先把三个history导出来看趋势确认没有异常突变再做位移云图、塑性区云图和应力云图三组图最后把有支护和无支护两种工况的关键数据放在同一张表里对比。云图用plot命令生成记得把断层带单独显示出来有时候断层带和巷道重合在一起云图根本看不清边界通过zone group范围显示可以解决这个问题。4. 计算结果怎么看围岩位移、塑性区与支护效果评价4.1 巷道变形量支护前后的数据对比模型跑完第一件看的事就是巷道周边的位移量。我把无支护、纯锚杆支护、锚固注浆联合支护三种工况的典型结果整理成了一张表工况顶板下沉mm帮部移近mm底鼓mm断层带最大位移mm无支护721185538纯锚杆45764125锚固注浆25331812这几个数据是我们这个项目工况下的典型结果不同地质条件下数值会有很大差异但趋势是一致的。单独打锚杆能把顶板下沉控制住一部分但帮部移近量依然很大因为断层带的剪切滑移不是锚杆单独能约束住的。加入注浆加固圈之后帮部移近明显降下来这正是现场说“锚注联合”优于“单一锚杆”的直接数值证据。4.2 塑性区分布与应力集中支护把破坏范围压住了多少塑性区的大小和分布比位移数字更直观。无支护工况下塑性区从巷道周边一直延伸到断层带内部断层两侧的塑性区几乎贯通意味着整条断层带在开挖扰动下可能形成连续的破坏通道。加了锚固注浆之后塑性区被压缩到巷道周边2米左右断层带内部的塑性区不再贯通巷道和断层之间的岩体仍然保持一定的承载能力。应力方面没有支护时巷道两帮和拱脚位置出现明显的压应力集中最大主应力可以达到原岩应力的三倍以上。注浆加固后加固圈承担了一部分应力转移巷道表面的应力集中程度下降应力高峰向围岩深部移动。这个“应力转移”效果对于防止巷道浅部围岩的松散破坏很重要。4.3 断层滑移监测数据怎么解释才靠谱断层上下盘相对位移曲线是判断整个方案是否安全的关键。我在项目里看到这样几个规律开挖面离断层超过10米时相对位移几乎为零开挖面接近断层5米范围时相对位移开始缓慢爬升穿过断层带的过程中曲线出现拐点位移速率明显加快最终如果支护方案有效曲线会趋于平缓收敛。如果曲线一直保持上升斜率不收敛或者在最张step仍然加速那基本可以认定支护方案不够需要加密锚杆间距或者扩大注浆范围。如果仅开挖段附近曲线上升、远处节点的位移保持稳定则说明断层影响范围是局部的支护只需针对断层影响段加强就行。用监测数据说话比单纯看最终云图更能判断施工的时机决策。5. 实操中踩过的坑与排查方法5.1 地应力平衡不收敛换参数不如换思路碰到过不止一次模型整体平衡时直接算飞的情况排查下来原因无非三类模型边界离巷道太近、网格划分在断层和巷道交界的区域过于扭曲、或者材料参数里抗拉强度设成了0导致局部单元一加载就破坏。网格扭曲的问题最隐蔽表面上看计算能跑但局部单元变形异常导致整体平衡不收敛。我总结的排查顺序是先检查边界尺寸再检查断层带网格形态最后把断层参数暂时抬高到围岩水平试平衡。三步做完基本能定位问题。这里多说一句如果断层带本身就是连续介质模型里的一层低参数单元平衡不收敛往往不是数值问题而是物理上就不该平衡——这时候可以考虑用interface接触面来建模断层但项目的连续模型一般不用走到那一步。5.2 锚杆施加后围岩没反应先查grout参数再查锚固长度有一版模型施加cable之后位移结果跟无支护几乎一样我排查了很久最终发现是cable的grout参数设置得过低。cable跟岩体之间的力是通过耦合弹簧传递的grout粘结刚度太低锚杆相当于在围岩里打滑自然拉不住。后来把grout刚度调到合理量级支护效果立刻出来了。另一个容易被忽略的问题是锚杆长度。锚杆只有穿过围岩松动圈、把锚固段放在弹性区里才会起作用。模型里如果松动圈范围已经算出来有4米锚杆只有3米那支护效果基本等于零。我在项目里反复提醒自己锚杆长度必须比塑性区厚度大留出足够的锚固段。5.3 版本差异与FISH调试技巧FLAC3D从6.0到7.0的命令风格变化非常大最典型的是7.0把所有zone相关的命令统一成了zone开头比如zone cmodel assign、zone property而早期版本是model和zone分开的。如果你的教程是5.0或6.0时代的拿到7.0里跑不通很正常不用怀疑自己写错了先检查命令版本。FISH方面的坑更多。我的调试习惯是写完一个函数先不跑计算在命令行直接敲函数名看返回值发现函数结果恒为0就先检查group名是否匹配在函数里尽量用local变量而不是全局变量避免函数间互相污染。另外一个经验是如果需要在每个计算步执行额外操作可以用FLAC3D的callback机制驱动FISH函数但新手起步阶段用history记录已经足够等跑通了再优化也不迟。最后分享一点个人体会项目跑完之后最大的感受是断层参数远比锚杆参数敏感。同样是这个模型锚杆间排距加密一倍顶板下沉只改善了两三毫米断层带内摩擦角提高两度整个塑性区范围和位移量都有肉眼可见的缩小。所以做这类项目第一步要花大力气把断层带的地质参数核实清楚再去调支护参数否则就是对着一个不可靠的地基做精细装修。另外分步开挖加solve的策略实测下来比全断面一次开挖的结果稳定得多也更接近现场工序建议大家宁可多花一点计算时间也要坚持这么做。后续我还在把手里的现场监测数据和模型结果做对比标定等积累到更多样本再把这部分的标定经验拿出来继续分享。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询