ANSYS鱼刺骨模型:简支梁桥静力分析从建模到验算全流程
昨天一个做桥梁检测的哥们儿拿着一份空心板简支梁桥的图纸来找我说要快速评估一下这桥在公路-Ⅰ级车道荷载下的跨中弯矩和挠度够不够。我给他的建议很简单别上来就画实体、剖网格先用鱼刺骨模型跑一遍。鱼刺骨这个说法听着有点土但它真的就是桥梁结构分析里最经典的等效简化手段——把整个桥面系抽象成一根脊梁再用横向的“骨头”把各片主梁连起来最后在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弹性模量PaN/m²MPaN/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混凝土输入至少三个参数弹性模量EXC50取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,i1,i*500,0,0 *ENDDO这样脊梁节点就有了。然后每个截面位置在脊梁两侧各生成一个边梁节点作为刚臂的外端点*DO,i,0,20 N,100i1,i*500,0,625 N,200i1,i*500,0,-625 *ENDDO为什么是625按前面1.25m板宽半宽就是625mm。这两个边节点将来可以用来模拟主梁实际位置也方便加载车轮荷载。3.2 定义单元类型、材料和截面骨架节点有了接下来定义单元类型。主梁脊梁单元用BEAM188它基于铁木辛柯梁理论支持剪切变形对桥梁这种细长构件比较合适而且截面定义灵活。ET,1,BEAM188 ET,2,MPC184BEAM188需要指定截面前面已经定义过了。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,i1 *ENDDO这就生成了20个脊梁单元每个单元长度500mm。接着生成横向刚臂。每个截面有一根左刚臂和一根右刚臂分别连接脊梁节点和边节点TYPE,2 MAT,2 *DO,i,0,20 E,i1,100i1 E,i1,200i1 *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则每个节点F25kN施加在所有脊梁节点上。活载按车道荷载公路-Ⅰ级包含一个集中力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_COMBO1.3*M_DL1.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 判断模型合理性的五个信号算得多了之后我总结出一些快速判断鱼刺骨模型是否合理的“体感信号”跨中弯矩和手算误差在5%以内。支座反力之和等于总荷载误差小于0.1%。位移云图是一条光滑的凸曲线没有局部突变。刚臂单元的应力值远大于脊梁单元说明它确实在扮演“刚性分配”的角色。增加网格密度缩短单元长度后跨中弯矩变化不超过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桥梁模型基本就立得住。