简介:这份资源围绕ANSYS预应力混凝土分析展开,面向结构工程方向的学生、工程师及科研人员,帮助解决有粘结预应力混凝土建模与求解方法选择的问题。内容系统梳理了等效荷载法与实体力筋法两条技术路线,并深入对比二者在建模难度、计算精度与适用场景上的差异。压缩包内为1个doc文档,约59KB,以文字讲解配合APDL命令流示例的形式呈现,便于边读边在软件中复现。文档重点剖析了实体力筋法的体分割法与独立建模耦合法,涵盖降温法、初应变法施加预应力的思路,并以预应力简支梁弹性分析为例,给出从定义材料属性、创建单元类型、设置初始应变到耦合节点、施加边界条件的完整命令流片段,同时点明等效荷载法在力筋分布、方向效应与应力损失方面的局限。已有347人学习,适合需要快速掌握预应力建模要点、对照命令流排查建模问题的读者参考。
1. 预应力混凝土在 ANSYS 里的两条路:等效荷载与实体力筋,选错代价有多大
做预应力混凝土仿真的人,迟早会撞上一个岔路口:力筋到底怎么进模型。有人图省事,把预应力折算成一对弯矩和轴力直接拍在梁端,跑出来跨中挠度看着挺像那么回事;有人老老实实建了实体、拉了力筋线、耦合了节点,结果算到一半不收敛。这两种做法就是 ANSYS 里最常被提起的等效荷载法和实体力筋法,前者把力筋的作用变成荷载,后者用 solid 模拟混凝土、link 模拟力筋,预应力靠降温或初应变施加。选哪条路,直接决定你能不能拿到细部应力、能不能模拟张拉过程、以及结果跟实测差多少。这篇笔记面向正在做预应力梁、连续梁桥或储罐分析的从业者,把两种方法的边界、实体力筋法的三种建模处理方式、以及我踩过的坑一次讲清楚,新手能照着 APDL 复现,熟手能对着参数表判断自己的模型该走哪条路。
2. 等效荷载法:什么时候够用,什么时候是自欺欺人
2.1 等效荷载法的力学本质与适用边界
等效荷载法的核心操作,是把力筋对混凝土的作用替换成一组等效外力。对一根直线预应力筋,张拉力 N 对梁的作用可以拆成两端偏心压力加上沿程的等效弯矩;对曲线筋,还要加上径向分布力。在 ANSYS 里,这些力通常用 beam 系列或 shell 系列单元承载,直接施加到混凝土单元的节点或线上。
它的优点非常直接:建模简单,不必考虑力筋的具体位置,网格划分也简单,对结构在预应力作用下的整体效应比较容易求得。如果你的目标只是看整体挠度、整体弯矩分布,或者做初步设计阶段的快速评估,等效荷载法完全够用,而且计算量小、收敛稳。
但它的缺点同样致命,而且往往在你想深入分析时才暴露。等效荷载法没有考虑力筋对混凝土的作用分布和方向,力筋对混凝土的作用在各处显然是不同的,等效荷载法无法考虑,水平均布分量也没有考虑。对某些线形的力筋模拟困难,比如常见的直线加曲线加直线加曲线加直线这种布筋形式,等效起来麻烦且可能不合理。更关键的是,它难以求得结构细部受力反映,否则荷载必须施加在力筋的位置上,这又失去了建模的方便性;在外荷载作用下的共同作用难以考虑,不能确定力筋在外荷载作用下的应力增量;对张拉过程无法模拟;也无法模拟应力损失引起的力筋各处应力不等的因素。
我自己的血泪经验是:等效荷载法最大的问题不是精度差一点,而是它给出的结果在跨中附近看着对,离开跨中就越来越离谱。原因很简单,跨中截面刚好对称,摩擦和滑移的影响被抵消了,很多分析只检验跨中数据,好像正确,一旦对离开跨中一段距离的截面进行分析,就会发现不正确。所以如果你要做的是局部应力分布分析,等效荷载法基本可以直接排除。
2.2 等效荷载法的 APDL 落地与参数校验
如果你确认整体分析够用,等效荷载法的 APDL 实现并不复杂。下面这段代码演示了如何在一根简支梁上施加等效预应力荷载,核心是把张拉力换算成端部轴力和偏心弯矩。
! 等效荷载法示例:简支梁整体分析 /prep7 et,1,beam188 ! 混凝土梁用 beam188 mp,ex,1,3.0e4 ! 混凝土弹性模量 MPa mp,prxy,1,0.2 sectype,1,beam,rect ! 矩形截面 secdata,300,600 ! 宽300 高600 ! 建立梁几何 k,1,0,0,0 k,2,3000,0,0 l,1,2 lesize,all,,,50 lmesh,all ! 施加等效预应力荷载 ! 张拉力 N=200000 N,偏心距 e=150 mm ! 端部等效轴力 fk,1,fx,-200000 fk,2,fx,200000 ! 端部等效弯矩 M=N*e fk,1,mz,-200000*150 fk,2,mz,200000*150 ! 约束 dk,1,ux,0 dk,1,uy,0 dk,2,uy,0 /solu solve finish这段代码的逻辑是:用 beam188 建一根简支梁,把预应力筋的张拉力 N 和偏心距 e 折算成梁两端的集中轴力和集中弯矩。参数说明:N=200000是张拉力,单位牛顿;e=150是力筋到截面形心的偏心距,单位毫米;fk命令在关键点上施加力或力矩。注意这里没有考虑沿程的径向力,对直线筋这是合理的,对曲线筋就需要沿梁长逐段施加等效分布力,工作量会明显上升。
校验方法:跑完之后提取跨中挠度和梁端转角,跟结构设计原理手算结果对比。如果误差在 5% 以内,说明整体分析可信;如果要做局部应力,别用这个方法。
3. 实体力筋法:三种建模处理方式的取舍与 APDL 实现
3.1 体分割法、节点耦合法、约束方程法的对比
实体力筋法把混凝土和力筋分别用 solid 和 link 单元模拟,预应力通过降温法或初应变法施加。降温方法比较简单,同时可以模拟力筋的损失,单元和实常数几种即可;初应变通常不能考虑预应力损失,否则每个单元的实常数各不相等,工作量较大。
在建模处理上,实体力筋法有三种路线:体分割法、节点耦合法、约束方程法。
体分割法的思路是先以混凝土结构的几何尺寸创建实体模型,然后用工作平面和力筋线拖拉形成的面将混凝土实体分割,将分割后体上的一条与力筋线型相同的线定义为力筋线,这样不断分割下去,最终形成许多复杂的体和多条力筋线,然后分别进行单元划分、施加预应力、荷载、边界条件后求解。这种方法是基于几何模型的处理,力筋位置准确,求解结果精确,但当力筋线型复杂时,建模比较麻烦,甚至导致布尔运算失败。我见过最惨的情况是横向和竖向钢筋靠得很近而且又多,切割成太多小实体,分网的时候直接没法做下去。
节点耦合法的基本思路是分别建立实体和力筋的几何模型,创建几何模型时不必考虑二者的关系,然后对几何模型的实体进行各自的单元划分,单元划分后采用耦合节点自由度将力筋单元和实体单元联系起来。这种方法是基于有限元模型的处理,建模比较简单,若熟悉 APDL 编程,则耦合节点自由度处理也比较简单。缺点是当混凝土单元划分不够密时,力筋节点位置可能有些走动,造成一定误差,为消除该误差,势必将混凝土单元划分得较密,即以牺牲计算效率获得上述优点。该方法是解决大量复杂力筋线型的有效方法。
约束方程法在节点耦合法的基础上更进一步。节点耦合法是通过点对点自由度耦合的,需要找寻最近的节点然后耦合,略显麻烦。约束方程法通过ceintf命令在混凝土单元节点和力筋单元节点之间建立约束方程,分别建立几何模型和单元划分后,只需选择力筋节点,ceintf命令自动选择混凝土单元的数个节点,在容差范围内与力筋的一个节点建立约束方程,通过多组约束方程将力筋单元和混凝土单元连接为整体。显然,该法更能提高工作效率,且对混凝土网格密度要求不高,进而提高了计算效率,也比较符合实际情况,计算结果较为精确。
三种方法的对比如下:
| 方法 | 建模难度 | 网格要求 | 力筋位置精度 | 适用场景 |
|---|---|---|---|---|
| 体分割法 | 高 | 高 | 准确 | 力筋少、线形简单 |
| 节点耦合法 | 中 | 较密 | 有微小走动 | 力筋多、线形复杂 |
| 约束方程法 | 低 | 一般 | 较精确 | 大量复杂力筋 |
3.2 独立建模耦合法的完整 APDL 流程
下面以预应力简支梁弹性分析为例,给出体线独立耦合法的完整 APDL 代码。这段代码来自实际可跑的模型,关键步骤都有注释。
! 预应力简支梁弹性分析--体线独立耦合法 /prep7 eg=2e5 ! 力筋弹性模量 MPa ag=140 ! 力筋截面面积 mm^2 eh=4e4 ! 混凝土弹性模量 MPa r0=9345 ! 力筋曲率半径 mm yyl=200000 ! 张拉力 N et,1,link8 ! 力筋用 link8 et,2,solid95 ! 混凝土用 solid95 ! 定义力筋实常数:截面面积和初应变 r,1,ag,yyl/eg/ag*1.036258 r,2 mp,ex,1,eg mp,prxy,1,0.3 mp,ex,2,eh mp,prxy,2,0.2 ! 建立混凝土实体 blc4,,,100,200,3000 /view,1,1,1,1 /ang,1 vplot ! 定义力筋线 ksel,all *get,kp0,kp,0,num,max lsel,none k,kp0+1,50,160 k,kp0+2,50,160,3000 k,kp0+3,50,800,1500 larc,kp0+1,kp0+2,kp0+3,r0 kdele,kp0+3 *get,line1,line,0,num,min ! 定义约束 lsel,s,loc,z,0 lsel,r,loc,y,0 dl,all,,uy lsel,s,loc,z,3000 lsel,r,loc,y,0 dl,all,,all allsel,all ! 单元划分 lsel,s,,,line1 latt,1,1,1 lesize,all,,,50 lmesh,all vsel,all vatt,2,2,2 lsel,s,loc,z,0 lsel,r,loc,y,10,140 lesize,all,,,8 lsel,s,loc,z,0 lsel,u,loc,y,10,140 lesize,all,,,4 lsel,s,loc,y,0 lsel,r,loc,x,0 lesize,all,,,50 vsweep,all allsel,all ! 耦合自由度:力筋节点与最近混凝土节点 lsel,s,,,line1 nsll,s,1 cm,cmljnod,node *get,max1,node,0,count *dim,ojd,,max1 *dim,jd,,max1 *get,nod1,node,0,num,min ojd(1)=nod1 *do,i,2,max1 ojd(i)=ndnext(ojd(i-1)) *enddo allsel,all nsel,all cmsel,u,cmljnod *do,i,1,max1 nod1=ojd(i) j=nnear(nod1) jd(i)=j *enddo nsel,all ji=1 *do,i,1,max1 cp,ji,ux,ojd(i),jd(i) cp,ji+1,uy,ojd(i),jd(i) cp,ji+2,uz,ojd(i),jd(i) ji=ji+3 *enddo allsel,all finish /solu solve finish /post1 pldisp,1 etable,sigi,ls,1 plls,sigi,sigi,1这段代码的逻辑分四块:第一块定义材料、单元和实常数,力筋的初应变通过yyl/eg/ag*1.036258计算,那个 1.036258 是考虑弹性压缩损失的修正系数,实际项目里需要根据张拉控制应力反算;第二块建立混凝土实体和力筋线,力筋线用larc命令生成圆弧;第三块划分单元,混凝土用vsweep扫掠划分,力筋线用lmesh划分;第四块是核心的耦合处理,先用nsll选出力筋线上的节点存入数组ojd,再用nnear为每个力筋节点找最近的混凝土节点存入jd,最后用cp命令逐对耦合三个平动自由度。
参数说明:eg=2e5和eh=4e4分别是力筋和混凝土的弹性模量,单位 MPa;ag=140是力筋截面面积,单位 mm²;yyl=200000是张拉力,单位 N;r0=9345是力筋曲率半径,单位 mm。耦合时每个力筋节点耦合三个自由度,所以ji每次加 3。
注意:这里用的是cp命令而不是cpintf,因为cpintf可能耦合其它节点,且容易不耦合。这是我在实际项目里翻过车的地方,用cpintf跑出来的结果力筋应力分布明显不对,换成逐对cp之后才正常。
4. 避坑与排查:预应力仿真里最容易翻车的五个地方
4.1 坑一:等效荷载法算出来的跨中挠度对,但支座附近应力完全不对
现象:用等效荷载法跑简支梁,跨中挠度和手算结果吻合,但提取支座附近截面应力时发现跟实测差了一个量级。
原因:等效荷载法没有考虑力筋对混凝土的作用分布和方向,曲线筋的径向力和水平均布分量都被忽略了。跨中截面刚好对称,摩擦和滑移的影响被抵消,所以看着对;离开跨中越远,误差越大。
解决:如果要做局部应力分析,换实体力筋法。如果只是整体分析,至少要在模型里沿梁长分段施加等效分布力,而不是只在梁端加集中力和弯矩。
4.2 坑二:降温法模拟预应力,结果力筋应力沿程均匀,但实际应该不等
现象:用降温法给力筋施加预应力,跑出来力筋各处应力基本相同,但实际工程中曲线筋的预应力沿程是变化的。
原因:降温法本质上是通过温度收缩产生应变,如果力筋与混凝土只在梁端耦合,降温过程无法模拟张拉钢筋的滑移;对于曲线筋,无法模拟预应力钢筋的损失及梁体受到切向摩擦的应力分布情况。即使对于不考虑摩擦损失的直线筋,若钢筋与梁体分离仅仅梁端耦合,本质上与等效荷载法完全一致。
解决:要模拟沿程应力不等,需要用分段初应变,每个单元的实常数各不相等。虽然繁琐,但可以很好地控制预应力分布。另一个思路是用单元生死技术模拟分批张拉,配合降温迭代来逼近预期张拉力。
4.3 坑三:节点耦合法中混凝土网格不够密,力筋节点跑位
现象:用节点耦合法建模,跑出来的力筋位置和设计位置有偏差,应力分布也不对。
原因:节点耦合法是通过nnear命令找最近的混凝土节点来耦合的,如果混凝土单元划分不够密,力筋节点可能找到的最近节点偏离实际位置,造成误差。
解决:加密混凝土网格,或者改用约束方程法。约束方程法通过ceintf命令在容差范围内自动选择混凝土单元的数个节点建立约束方程,对混凝土网格密度要求不高,计算效率也更高。
4.4 坑四:体分割法布尔运算失败,模型建不下去
现象:用体分割法处理复杂力筋线型时,工作平面切割实体反复失败,或者切割后产生大量畸形小实体,分网无法进行。
原因:体分割法是基于几何模型的处理,当力筋线形复杂、力筋数量多且靠得近时,布尔运算容易失败,切割出的小实体形状太差,网格划分质量无法保证。
解决:力筋少且线形简单时用体分割法;力筋多且线形复杂时,果断换节点耦合法或约束方程法。我一般会在建模初期就评估力筋数量,超过 10 根或者有空间曲线就放弃体分割。
4.5 坑五:初应变大小确定不了,弹性压缩损失对不上
现象:用初应变法施加预应力,跑出来的存留值和设计值对不上,反复调整初应变也找不到规律。
原因:初应变的大小确定实际上就是模拟张拉的一个过程,最终要的是存留值。混凝土梁在预应力作用下会发生弹性压缩,力筋的应力会随之损失,要想精确模拟,必须通过反复调整初应变来模拟混凝土梁的弹性压缩损失。
解决:先按张拉控制应力施加初应变,跑一次提取混凝土的弹性压缩量,反算力筋应力损失,修正初应变后再跑,一般迭代两到三次就能收敛。对后张法构件,由于降温模拟张拉过程中结构会发生相应变化,一次降温模拟难以达到预期张拉力,可以通过降温迭代方法来达到预期值。
5. 从整体到局部:混合建模策略与结果验证的一个具体技巧
实际项目里,我很少从头到尾只用一种方法。连续梁桥的悬臂施工仿真分析中,三向预应力钢筋的模拟是个很关键的问题,我的做法是混合使用:纵向预应力筋长且线型复杂,用约束方程法单独建模;竖向预应力筋是直筋且不长,用等效荷载法处理;横向预应力筋根据具体情况在节点耦合和约束方程之间选。在同一个模型中结合多种方法,说来也是没办法,但最后还算可以。
这里给一个具体的验证技巧:不管用哪种方法,跑完之后一定要提取力筋的应力分布,跟规范计算的预应力损失对比。具体操作是在 POST1 里用etable提取 link 单元的轴向应力,沿力筋路径画出来,看三个位置:张拉端、跨中、锚固端。张拉端应力应该接近张拉控制应力,跨中因为摩擦损失应该略低,锚固端因为锚具变形和钢筋回缩应该有一个回缩影响区。如果这三个位置的应力分布趋势跟规范对不上,说明你的预应力模拟有问题,别急着看混凝土应力,先把力筋应力调对。
还有一个习惯:每次做预应力分析,我都会先跑一个只有力筋和简单约束的模型,确认初应变或降温施加的预应力值正确,再往里面加混凝土实体和耦合。这样能把预应力施加的问题和耦合连接的问题分开排查,省得混在一起找不到原因。从那以后我每次建预应力模型都强制走一遍这个分步验证,希望帮到你。
本文还有配套的精品资源,点击获取