我最早意识到这个问题,是在做一个小半径隧道开挖模型的时候。模型跑完后洞周云图看起来也挺正常,sxx、syy都有各自的分布,但真正到写报告的时候我卡住了:设计方要的是“洞壁围岩的径向应力和切向应力”,不是直角坐标下的sxx、syy。FLAC 3D默认在笛卡尔坐标系里输出所有应力和位移分量,可圆形巷道、钻孔、竖井这类问题,工程上最关心的量都是沿着半径方向和切线方向定义的。从那一刻起我才认真把“FLAC 3D极坐标下应力与位移”这件事从头捋了一遍,这里面的坑比想象中多,但捋清楚之后,很多后处理工作会变得非常顺手。
这篇文章写给谁?主要是在用FLAC 3D做隧道、巷道、桩基、基坑或者弧形结构分析的人。你已经会建模、会跑计算,但可能和我一样面临一个问题:模型结果有了,可该怎么把直角坐标下的应力和位移正确地转换到极坐标里?这篇文章会讲清楚坐标转换的数学原理、FLAC 3D数据提取的三种可行方案、画极坐标曲线的实操经验,以及我在处理弧形堤坝位移监测数据时踩过的一些坑。我不打算讲太多教科书理论,尽量多给能直接上手用的东西。
1. 圆形结构分析为什么绕不开极坐标视角
1.1 洞室围岩的径向应力和切向应力才是设计要的东西
在地下洞室、深埋巷道这类问题里,应力场在洞室周围会发生重分布。我们可以想象在洞壁上取一个微元体,这个微元体的一对面垂直于半径方向,另一对面垂直于圆周切线方向。作用在前者上的正应力,就是径向应力σr,它紧贴围岩与支护的接触面,直接决定作用在衬砌或锚喷结构上的围岩压力;作用在后者上的正应力,就是切向应力σθ,也叫环向应力,它决定了洞壁围岩是否会发生压剪破坏或者片帮。
如果用直角坐标的σx、σy去描述这个状态,也不是不可以,但物理意义会被绕弯子。比如你看到洞壁某一点σx是–3MPa、σy是–12MPa,单看这两个数字很难直接判断这个点是否危险。可如果把坐标系旋转到“径向+切向”,得到σθ=–25MPa、σr≈0MPa,就能立刻意识到洞壁无径向约束、环向应力高度集中,这恰恰是围岩破坏的先决条件。
在岩体力学里有一个非常经典的对照:圆形孔洞周围的应力集中系数在弹性条件下理论解很清晰,洞壁切向应力可以达到原岩应力的2倍甚至更高,而径向应力在洞壁处必须等于零或等于支护反力。这类直观认识全部建立在极坐标变量的基础上。
1.2 FLAC 3D的输出坐标和工程坐标之间有偏差
FLAC 3D是一套基于有限差分方法的连续介质力学程序,zone(单元)保存应力张量,gridpoint(节点)保存位移、速度。软件默认情况下,所有应力和位移分量都按全局笛卡尔坐标系输出。zone.stress.xx是x方向的正应力,zone.stress.yy是y方向正应力,zone.stress.zz是z方向正应力,zone.stress.xy是xy平面内的剪应力。节点位移也是ux、uy、uz三件套。
这就有意思了:你的巷道明明是圆形的,建模时网格绕着圆心一圈一圈地排布,但计算完成后程序并不会告诉你“这个zone的径向应力是多少”。你得自己去判断每个zone或每个节点位于洞周什么方位角、离圆心多远,然后把直角坐标下的结果投影到当地的径向和切向方向上去。
很多初学者会犯一个错误,以为FLAC 3D里既然能画出环状的应力云图,程序内部就已经算好极坐标分量的。实际上那个云图仍然是sxx或syy在空间上的分布,只是网格造型是弧形的,颜色分布看起来像是沿着半径变化。你如果提取一个弧形路径上的sxx数值,会发现它同时混入了角度和半径的影响,不经过坐标旋转,很难得到与经典理论可比的σr或σθ。
1.3 哪些情况适合用极坐标处理结果
不是说所有FLAC 3D模型都需要做极坐标转换,我建议你先判断自己的问题是否属于下面这几类:
- 圆形或近似圆形的水平巷道、隧道、盾构管片模型;
- 竖井、钻孔、桩孔周围的应力场,井轴和模型轴重合;
- 具有曲线边界的岩土结构(比如弧形挡土墙、拱坝坝肩、曲线形堤坝),关心面外法向和切向的受力;
- 需要与Kirsch理论解、芬纳公式、卡斯特纳公式等解析解做对比验证;
- 沿洞周布置了多个监测点,要比较不同角度的变形规律。
如果模型是矩形洞室、边坡这类问题,直接用直角坐标输出通常就够了,硬要做极坐标反而有强行套公式的嫌疑。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 从FLAC 3D里取数据:三条能落到实处的路径
拿到原始数据是所有后处理的前提,这一节先讲清楚“怎么把FLAC 3D里的笛卡尔应力、位移分量提取出来”。有三类做法我比较常用,分别适用于不同场景。
2.1 选对网格形状:极坐标提取的前提是能定义圆心和半径
在谈数据提取之前,必须看一眼模型网格。如果是一个圆形洞室模型,网格最好画成从圆心向外辐射的“蜻蜓翅膀状”,也就是径向线加同心弧段把平面切分,这样每个zone的几何信息天然包含圆心距和角度信息。FLAC 3D建模时可以用cylindrical隧道开挖命令配合放射状网格生成,也可以用其他前处理软件先画好再导入。
我见过一个同事直接用一个矩形大网格中间挖掉一个圆洞来做隧道模型,洞周网格完全不是辐射状的。在那种模型里做极坐标提取虽然也有可能,但精度和可解释性都会大打折扣。因为一个矩形zone完全可能跨越好几个角度区间,你用它形心的坐标去代表该处的径向应力,误差较大,而且洞壁应力集中区域根本不会被弧形网格很好地捕捉。
建模阶段就要想清楚后处理想要什么:给洞壁留至少8到16个等分角度段,每一段里至少有两三圈zone,这样洞壁附近的应力和位移随角度的变化才能画出一条光滑曲线。
2.2 history测点法:适合少量关键点连续跟踪
如果只想关注洞周的某几个点,比如拱顶、拱底、左右帮,那用history记录最省事。FLAC 3D支持对zone和gridpoint做history记录。
在建模完成后,可以在洞壁关键位置用zone history记录该zone的应力分量,或者用gridpoint history记录节点的位移分量。这个方法的优点是非常轻量,计算完成后直接plot history就能看变化曲线。
但history法有几个限制:
- history记录的是固定的zone或gridpoint,如果你的网格在计算过程中发生大变形,zone的几何位置已经移动了,你记录的应
