ANSYS鱼刺骨模型:简支梁桥静力分析从建模到验算全流程
2026/9/20 4:02:46 网站建设 项目流程

昨天一个做桥梁检测的哥们儿拿着一份空心板简支梁桥的图纸来找我,说要快速评估一下这桥在公路-Ⅰ级车道荷载下的跨中弯矩和挠度够不够。我给他的建议很简单:别上来就画实体、剖网格,先用鱼刺骨模型跑一遍。鱼刺骨这个说法听着有点土,但它真的就是桥梁结构分析里最经典的等效简化手段——把整个桥面系抽象成一根脊梁,再用横向的“骨头”把各片主梁连起来,最后在ANSYS里完成静力分析。这篇我把自己从建模到出结果的全过程拆开讲,不跳步、不藏坑,适合刚上手ANSYS的桥梁方向学生,也适合做检测加固想快速算一本账的工程师。

1. 鱼刺骨模型到底是什么?为什么静力分析绕不开它

1.1 从梁格法到脊梁模型:一根梁加几根骨头

在讲ANSYS操作之前,得先把模型的概念说清楚,否则后面设单元、加约束都是盲人摸象。

桥梁上部结构是一个典型的板梁组合体系,拿空心板桥来说,十几片空心板并排放在一起,板与板之间靠铰缝传力。严格一点算,这应该用实体单元或者板壳单元。但问题在于:如果只是想算整体受力、得到控制截面的弯矩剪力和挠度,实体模型的计算代价高、网格敏感性大,而且后处理提取内力还很麻烦。

所以工程上常用“脊梁法”或“梁格法”来做整体分析。鱼刺骨模型是脊梁法的一种落地形式:沿桥梁纵向,在截面形心位置布置一根主梁单元,这根梁就是“脊梁”,它承担全部的纵向弯矩和剪力;然后在每个需要传力的横截面处,从脊梁向两侧伸出刚性横臂,这些横臂就是“鱼刺”,作用是把桥面系上的竖向外荷载合理地分配到脊梁上,同时模拟横向刚度的贡献。

这样处理之后,一个三维的板梁结构就被简化成一幅“鱼骨架”,既能反映纵向受力特征,又能通过横向刚臂考虑荷载横向分布,计算量却只有梁单元的级别,几分钟就能出结果。

1.2 鱼刺骨模型的适用边界:什么情况别硬用

鱼刺骨模型不是万能的。我自己踩过坑:有一次给一座斜交角度比较大的箱梁桥做分析,也用了脊梁+刚臂,结果扭矩结果完全不对。后来查资料才意识到,鱼刺骨模型默认截面是“刚周边”的,也就是横截面在自身平面内不变形,这对正交桥梁的总体受力是够用的,但遇到斜交、宽跨比较大的桥梁,横向变形不可忽略,这时至少得用多梁式梁格法,甚至板壳模型。

所以动手前先问三个问题:

  • 结构是不是以纵梁受力为主?是的话,鱼刺骨合适。
  • 桥面宽度和跨度比是不是在合理范围?一般宽跨比小于0.5,鱼刺骨误差可控。
  • 要不要看局部应力?要的话,鱼刺骨做不了,得用实体子模型。

一句话总结:鱼刺骨模型解决的是“桥梁整体静力性能评估”的问题,它给的是骨架层面的内力与位移,不是局部焊缝或混凝土开裂的精细结果。搞清楚这一点,后面所有操作才有的放矢。

2. 建模前先定死三件事:单位、材料、截面

2.1 单位制:ANSYS里不存在"默认单位"

刚接触ANSYS的人十有八九会在单位上栽跟头。ANSYS本身不强制指定单位系统,只认你输入的数字,所以单位制必须自己在脑子里统一。我习惯用毫米-牛顿制(mm·N),也就是长度用mm,力用N,应力单位就是MPa。这样做跟图纸上的毫米尺寸无缝衔接,不用来回换算。

单位统一之后,涉及的材料参数也得跟着换:

参数国际制(m·N)毫米制(mm·N)
弹性模量Pa(N/m²)MPa(N/mm²)
密度kg/m³t/mm³
重力加速度m/s²mm/s²
应力PaMPa

比如C50混凝土,弹性模量取3.45×10⁴ MPa,在毫米制下直接输入3.45E4;密度通常取2.5e-9 t/mm³。如果你用m·N制,密度则是2500 kg/m³。这个不统一,模型出来的自重重心都不对,后面静力分析全是白算。

2.2 材料参数:别只填弹模就完事

桥梁静力分析里,主梁材料常见就两类:混凝土和钢材。以空心板桥为例,主梁用C50混凝土,输入至少三个参数:

  • 弹性模量EX:C50取3.45×10⁴ MPa;
  • 泊松比PRXY:混凝土取0.2;
  • 密度DENS:钢筋混凝土取2.5×10⁻⁹ t/mm³,如果要考虑铺装层等二期恒载,一般把密度折算进等效自重或直接加载,不建议乱调密度。

如果是钢结构桥梁,Q345qD钢材的EX取2.06×10⁵ MPa,泊松比0.3,密度7.85×10⁻⁹ t/mm³。

这里有个细节:ANSYS经典界面里,材料参数和单元类型、实常数是分开设置的。很多新手把EX填错位置,或者漏了材料编号,导致后面赋给单元时报错。我的习惯是定义材料前先在草稿纸上列一个清单:材料编号1是混凝土,编号2是刚臂用的“大刚度材料”,编号3如果还有支座垫石等再另说。

2.3 截面参数:把设计图纸折算成等效截面

鱼刺骨模型的主梁截面,理论上应该取整个桥面系的等效截面,而不是某一根梁的真实截面。等效的原则是:截面面积相等、竖向抗弯惯性矩相等。

比如一块10m空心板,板宽1.25m,板高0.8m,中间有圆形空洞。手算等效截面时,可以按净面积和净惯性矩折算成一个矩形截面,用这个矩形的宽和高作为SECDATA的输入。更稳妥的办法是在CAD里画出实际截面,用面域查询质量特性,得到面积和惯性矩,再反算等效矩形。

在ANSYS中定义梁截面,命令流里常用:

SECTYPE,1,BEAM,RECT SECDATA,1.25,0.8

意思是用一个宽1.25m、高0.8m的矩形截面来模拟整幅桥面。注意这里如果你的单位是mm,那要输入1250和800。

如果截面形状复杂,也可以用SECTYPE的MESH子选项,直接读取截面网格来算截面属性,但对于鱼刺骨模型,等效矩形通常足够。

我在实际项目中,经常先手算一遍跨中截面惯性矩,再用ANSYS的SECPLOT命令显示截面来复核,确保截面方位和尺寸跟预期一致。截面方向尤其要注意,BEAM188单元的截面方向由方向点决定,搞反了截面会横着放,弯矩结果完全不靠谱。

3. 在ANSYS里搭鱼刺骨骨架:节点、单元、刚臂

3.1 先建立关键点:把骨架线画出来

打开ANSYS Mechanical APDL(经典界面),我的习惯是先建几何关键点,再通过这些点生成节点和单元,也就是所谓的“直接建模法”。相比先用几何体再划分网格,直接建模在梁系结构里其实更高效,因为你本来就是算一个骨架,不需要自动网格。

以一座10m跨径的简支空心板桥为例,沿跨度方向每隔0.5m放一个横截面位置,一共21个截面。脊梁节点坐标就是(x, y, z) = (i×500, 0, 0),其中i从0到20,单位mm。

用循环命令快速生成:

*DO,i,0,20 N,i+1,i*500,0,0 *ENDDO

这样脊梁节点就有了。然后每个截面位置,在脊梁两侧各生成一个边梁节点,作为刚臂的外端点:

*DO,i,0,20 N,100+i+1,i*500,0,625 N,200+i+1,i*500,0,-625 *ENDDO

为什么是625?按前面1.25m板宽,半宽就是625mm。这两个边节点将来可以用来模拟主梁实际位置,也方便加载车轮荷载。

3.2 定义单元类型、材料和截面

骨架节点有了,接下来定义单元类型。主梁脊梁单元用BEAM188,它基于铁木辛柯梁理论,支持剪切变形,对桥梁这种细长构件比较合适,而且截面定义灵活。

ET,1,BEAM188 ET,2,MPC184

BEAM188需要指定截面,前面已经定义过了。MPC184用来做刚性横臂,也就是“鱼刺”。这里有一个关键设置:MPC184单元通过KEYOPT(1)控制行为模式,默认是刚性杆,只能传轴力;我们要的是刚性梁,要能传弯矩,所以必须把KEYOPT(1)设置成1。

KEYOPT,2,1,1

这个KEYOPT错没设对,会导致刚臂不传递弯矩,荷载横向分配失效,算出来的跨中弯矩会严重偏小。

材料也要分两种:主梁是混凝土,刚臂是“伪材料”。伪材料不是真的材料,而是为了近似刚性而用的高弹性模量。比如取混凝土弹模的1000倍,这样刚臂的轴向和弯曲刚度远大于主梁,近似无限刚。

MP,EX,1,3.45E4 ! 混凝土 MP,PRXY,1,0.2 MP,DENS,1,2.5E-9 MP,EX,2,3.45E7 ! 刚臂伪材料 MP,PRXY,2,0.3

刚臂的截面也定义一个矩形截面,尺寸可以取大一点,但不影响主梁结果,因为材料刚度已经足够大了。

3.3 生成脊梁单元和横向刚臂

现在开始“长肉”。先给脊梁节点赋上主梁属性,然后从左到右连接节点生成梁单元:

TYPE,1 MAT,1 SECNUM,1 *DO,i,1,20 E,i,i+1 *ENDDO

这就生成了20个脊梁单元,每个单元长度500mm。

接着生成横向刚臂。每个截面有一根左刚臂和一根右刚臂,分别连接脊梁节点和边节点:

TYPE,2 MAT,2 *DO,i,0,20 E,i+1,100+i+1 E,i+1,200+i+1 *ENDDO

到这里,一个标准的鱼刺骨模型就搭出来了:中间一根脊梁,两侧一排刚臂,从侧面看过去确实像一条鱼骨头。

3.4 边界条件:简支约束要加对位置

简支梁桥的支座,严格说是一端固定铰支、一端活动铰支。在鱼刺骨模型里,支座应该加在实际支座位置的节点上,也就是两侧边梁节点对应的位置,而不是直接加在脊梁端点上。如果直接锁死脊梁端点的竖向位移,虽然也能算,但会改变荷载向支座的传递路径,和实际支座反力分布对不上。

具体操作:在左端截面,约束脊梁节点的UX、UY、UZ三个平动自由度,同时约束两个边节点的UY、UZ,避免局部刚体位移。在右端截面,不约束UX,只约束UY、UZ。

D,1,UX,0 D,1,UY,0 D,1,UZ,0 D,101,UY,0 D,101,UZ,0 D,201,UY,0 D,201,UZ,0 D,21,UY,0 D,21,UZ,0

这里节点编号按前面的循环,第1号是左端脊梁节点,第101和201号是左端两个边节点,第21号是右端脊梁节点。如果约束加错自由度,求解器会提示“节点有冗余约束”或者出现刚体位移,这种情况我后面细说。

4. 静力分析怎么跑:荷载工况、加载方式与求解设置

4.1 恒载和活载:不能一股脑全堆上去

静力分析的核心是荷载工况,桥梁规范里常分成恒载和活载。提醒一句:ANSYS本身不懂桥梁规范,它只管你在节点或单元上施加的力,荷载怎么组合、怎么分项,是你自己的事。

恒载包括主梁自重、桥面铺装、护栏等。主梁自重可以通过材料密度自动形成,只要在求解前打开惯性荷载:

ACEL,0,9800,0

注意单位是mm/s²,9.8m/s²要写成9800mm/s²。方向默认是整体坐标的正方向,如果模型Z向上,重力应该沿-Z方向,但我这里为了简化,模型是二维平面内的梁,所以很多教程把重力设为Y向负值,要看你的整体坐标方向。更稳妥的办法是确认“重力方向”而不是“数值正负”。

二期恒载(铺装、护栏)建议直接作为均布荷载折算到节点上:总荷载除以节点间距,得到每个节点上的集中力。比如二期恒载总计50kN/m,节点间距0.5m,则每个节点F=25kN,施加在所有脊梁节点上。

活载按车道荷载,公路-Ⅰ级包含一个集中力Pk和一个均布荷载qk。简支梁最不利布置是集中力在跨中。这个集中力可以直接加在跨中截面的脊梁节点上,或者更精细一点,按横向分布系数分配到边梁节点上。

我常用的做法是:把车道荷载的集中力放在跨中节点,均布荷载按节点间距折算后加载。为了对比不同工况,我建议把恒载和活载分别定义成不同的荷载步,方便在后处理中分别查看。

4.2 求解设置:要不要开大变形?

静力分析分线性静力和非线性静力。桥梁在正常使用荷载下的位移远小于跨度,属于小变形问题,直接用线性静力分析就行。在ANSYS里:

/SOLU ANTYPE,0 SOLVE

默认就是线性静力分析,不需要打开大变形。但是要小心一个问题:如果不小心设置了NLGEOM,ON,而模型又存在刚性约束不足,求解会不收敛,或者结果出现异常的“机构位移”警告,新手容易被吓到。

子步数在线性分析里意义不大,默认就行。真正影响结果的往往是“是否考虑初始应力”和“截面方向点”这些隐藏设定。

4.3 常见的警告和报错:我把它们一个个踩过

先说的是刚体位移警告。这基本就是约束不够。我之前有一次把右端的UX约束漏了,结果整个梁在X向可以自由滑动,求解器在输出窗口弹出一长串“位移太大”的提示。遇到这个,第一反应不是去调求解器,而是回去检查边界条件。

再一个是“单元畸形”警告。鱼刺骨模型里,如果刚臂只设置成刚性杆(MPC184的KEYOPT(1)=0),那么它在横向无法传递面外弯矩,模型就变成一个“可动机构”,也会导致结果异常。解决办法就是KEYOPT(1)改回1。

还有一种情况是截面方向点冲突。BEAM188是靠方向点来定义局部坐标的,如果所有脊梁单元只定义了一个方向点,扭矩结果会出错。直角桥梁虽然影响不大,但斜桥和弯桥一定要为不同区段的单元单独定义方向点。

4.4 荷载组合:别忘了一个系数的小事

很多人算完恒载、算完活载,直接把两个结果加起来当最终弯矩,这是不对的。规范里的承载力组合和正常使用组合都有分项系数。至少你要在Excel里把恒载乘1.3、活载乘1.5(按现行公路桥规,值仅供参考),再看控制截面弯矩是否超限。

ANSYS里可以通过多个荷载步加载,然后写一个简单的后处理命令把结果组合:

*GET,M_DL,ETABLE,... ! 提取恒载弯矩 *GET,M_LL,ETABLE,... ! 提取活载弯矩 M_COMBO=1.3*M_DL+1.5*M_LL

当然,具体系数要以你实际采用的规范条文为准。

5. 结果后处理:弯矩、剪力、挠度怎么提出来验算

5.1 用ETABLE提取单元内力

求解完成后,进入POST1后处理。梁单元的内力不像实体单元那样直接显示云图,需要通过单元表(ETABLE)来提取。

BEAM188的单元表项里,SMISC,2和SMISC,15等代表不同位置的弯矩,具体编号跟截面输出点有关。我的习惯是直接用这个命令列出一部分常用项:

ETABLE,MI,SMISC,3 ETABLE,MJ,SMISC,16

然后通过PRETAB命令把各单元的I端和J端弯矩列出来,找到跨中附近单元的弯矩值。对简支梁,跨中最大弯矩应该在跨中单元附近,用手算qL²/8校核一下数量级。

剪力的提取类似,用的是SMISC,6和SMISC,19之类的编号。需要说明的是,不同ANSYS版本的BEAM188输出项编号可能不同,建议先执行ETABLE,STAT查看有哪些表项,再挑对应的编号,别照抄我的数字就完事了。

5.2 手算校核:一次可靠的分析必须过这道关

不管ANSYS算得多漂亮,我最后都会做一步手算验算。

以10m简支梁、跨中作用集中力P为例,理论跨中弯矩是PL/4。如果鱼刺骨模型里加了二期恒载均布q,那跨中弯矩理论值是qL²/8。把ANSYS结果和理论值比较,误差在5%以内,说明模型没大问题;如果差到20%以上,基本可以断定是约束方向、材料参数或者荷载施加环节出了问题。

挠度也是同理,简支梁在均布荷载下的跨中挠度是5qL⁴/(384EI),集中力下是PL³/(48EI)。ANSYS后处理里直接用PLDISP命令看位移云图,然后在跨中节点用NSOL提取竖向位移值,跟手算对比。

这里透露个小技巧:在ANSYS里算出的位移单位是mm(因为用了mm·N),但如果你的模型单位没统一,位移数值可能是米也可能是毫米,对不上号就先检查单位,别急着怀疑软件。

5.3 判断模型合理性的五个信号

算得多了之后,我总结出一些快速判断鱼刺骨模型是否合理的“体感信号”:

  1. 跨中弯矩和手算误差在5%以内。
  2. 支座反力之和等于总荷载,误差小于0.1%。
  3. 位移云图是一条光滑的凸曲线,没有局部突变。
  4. 刚臂单元的应力值远大于脊梁单元,说明它确实在扮演“刚性分配”的角色。
  5. 增加网格密度(缩短单元长度)后,跨中弯矩变化不超过1%,说明网格已经收敛。

只要这五点里有两三点对不上,我一定会回头重新查模型,而不是硬着头皮出报告。

5.4 把一维结果变成“能看懂”的图表

后处理完数据,我一般会再从ANSYS里把弯矩、剪力数据导出来,在Excel里画成内力包络图,汇报时直接贴在报告里。具体做法是:PRETAB输出单元号、I端弯矩、J端弯矩,复制粘贴到Excel,以单元中心位置为X轴,弯矩值为Y轴画折线图。

用Workbench的朋友,可以进入Mechanical的Results模块,右键“Beam Tool”,直接生成梁单元的轴向力、剪力、弯矩和应力结果,比经典界面更直观。但注意:Workbench里线体建模时,截面方向同样要在“Cross Section”里指定,这一步很多人没做,结果算出来弯矩全部为0,就是截面方向没定义对。

6. 一些建模经验和习惯,不吐不快

最后补充几点长期积累的习惯,不一定写进教科书,但能救命。

习惯于建模前用一张纸把节点编号规则写清楚。比如0-99是脊梁,100-199是左刚臂外端,200-299是右刚臂外端。后面改模型、写循环、提取结果时,这套编号规则能省大量时间,尤其是模型一复杂,编号混乱会让你想砸电脑。

还有,每次求解之前,养成看一眼输出窗口的习惯。ANSYS在SOLVE之前会打印出当前模型单元数、节点数、约束数、荷载数,肉眼扫一遍就能发现“怎么多出两个约束”“单元数怎么少了”这种低级问题。等到求解完才回头看,往往已经晚了。

再有一点,刚臂单元的大刚度取值不能盲目。取主梁弹模的1000倍是我常用的值,但如果你把刚臂弹模取到10¹² MPa,单元数值可能出现病态,求解器里会出现“矩阵奇异”的警告。大刚度法本身就是一种近似,合适就好,不是越大越真。

还有,如果模型最终要提交给别人复核,我一定会在ANSYS里用SAVE保存一个.db文件,同时把APDL命令流复制出来存成.txt。这样即使在另一台电脑上打开,也能通过命令流完整复现模型。很多新手只存结果图,一旦需要修改参数,就得从头再来,非常痛苦。

说到底,鱼刺骨建模+静力分析这套流程并不复杂,核心就是三件事:模型概念搞清楚、单位统一做到位、结果用手算校一遍。做到这三点,你的ANSYS桥梁模型基本就立得住。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询