本文摘要(由AI生成):
本文研究了梁结构的模拟方法,对比了梁单元和实体单元的差异。在细长梁的情况下,不同方法的约束差异对结果影响较小,可以采用简化的力学模型。然而,对于粗壮梁,欧拉梁理论的误差较大,而铁摩辛柯梁单元和实体单元在正确施加约束的条件下可以得到与弹性理论一致的结果。实体单元模拟梁结构时,需要注意约束的施加方式。文章建议采用BEAM18x单元模拟梁结构,因其考虑了剪切变形的影响,结果更准确。
在ANSYS的低版本中,有欧拉梁单元(如2D的BEAM3、3D的BEAM4等),而在高版本中就只推荐铁摩辛柯梁单元BEAM18x(参见Ansys 屈曲要注意BEAM18x适用条件,尤其与欧拉梁比较时更要谨慎)。从计算效率等方面考虑,细长梁无疑会选择梁单元模拟;只有较粗梁件才会考虑采用实体单元模拟,但也不是必须选择实体单元。无论采用梁单元还是实体单元,比较其差异,应该在条件相同的基础上去比较。
梁单元也被称为“线单元”,在不设置截面偏置的情况下,其节点连线代表梁截面的质心连线,也就是说边界推荐的荷载和约束是对质心施加的,图1(a)。而采用实体单元模拟梁的关键是边界条件与梁单元的边界条件一致;在细长梁中,二者约束条件不同引起的差异很小,可以采用图1(b)所示的计算模型;但当梁较粗壮时,应该采用与梁单元相同的约束条件,即图1(c)所示的模拟方法。
图1(b)是简支梁的实际状态,采用实体单元很容易模拟。而图1(a)是简支梁常用的简化力学模型,该模型与实际状态就存在差别,但在梁较细长时,这种约束差别对结果影响很小。图1(c)是在梁两端通过刚性区域创建约束方程,只对质心施加约束,与图1(a)的约束一致,也就是实体单元模拟的边界条件与梁单元模拟的边界条件相同,但与实际工作状态有差别。综上,图1(b)是实际工作状态,图1(a)是简化的力学模型,图1(c)是和图1(a)约束一致的实体单元模拟模型。
假设简支梁为矩形截面,高和宽为0.6m×0.9m,弹性模量和泊松系数如命令流中,改变梁的计算宽度,以图2中A点应力和B点挠度为结果(图2为弹性力学的应力函数解),如表1所示。从表1中可以看出:
(1)细长梁采用欧拉梁理论、铁摩辛柯梁理论、实体单元的两种约束方式等,其结果均与弹性理论结果一致。
(2)对于粗壮梁,(a)铁摩辛柯梁单元BEAM189、实体单元模型B与弹性理论解一致。(b)误差较大的是欧拉梁理论,这也很容易理解,在结构设计原理中早有论述,即此时不是“梁”而是“深梁”。(c)实体单元模型A误差也较大,不是实体单元SOLID185计算不准,而是粗壮梁的模拟模型的约束不能施加在梁体下缘。
(3)BEAM189单元无论模拟细长梁还是模拟粗壮梁,结果都与弹性理论解一致,主要是铁摩辛柯梁理论考虑了剪切变形对挠度的影响。
综上所述,建议采用BEAM18x单元模拟梁结构;实体单元当然也可模拟梁结构,但与其他方法的计算结果比较时,需注意施加的约束要一致。
(附件1:图2为弹性力学的理论解)
(附件2为BEAM189模拟和SOLID185模拟的命令流)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! FINISH$/CLEAR$/PREP7! A=0.6$B=0.9$L=8 K,1$K,2,,,L$K,3,,1$L,1,2 ET,1,BEAM189$MP,EX,1,3E10 MP,PRXY,1,0.22 SECTYPE,1,BEAM,RECT SECDATA,A,B LATT,1,,1,,,3,1$ESIZE,0.1 LMESH,ALL DK,1,UX,,,,UY,UZ,ROTZ DK,2,UY,,,,UX SFBEAM,ALL,1,PRES,5E5*A /SOLU$SOLVE$/POST1 U0=UY(NODE(0,0,L/2)) *GET,SZX,SECR,,S,X,MAX *STAT !===================== FINISH$/CLEAR$/PREP7 A=0.60$B=0.90$L=8 BLC4,,,A,B,L ET,1,SOLID185$ET,2,MASS21 MP,EX,1,3E10$MP,PRXY,1,0.22 R,1$R,2$MSHKEY,1$ESIZE,0.1 VMESH,ALL *GET,N1,NODE,,NUM,MAX N1=N1 1$N2=N1 1 N,N1,A/2,B/2,0 N,N2,A/2,B/2,L TYPE,2$REAL,2$E,N1$E,N2 NSEL,S,LOC,Z,0 CERIG,N1,ALL,UXYZ NSEL,S,LOC,Z,L CERIG,N2,ALL,UXYZ NSEL,ALL D,N1,UY,,,,,UZ,ROTZ,ROTY D,N2,UY,,,,,UX,UZ ASEL,S,LOC,Y,B SFA,ALL,1,PRES,5E5 ALLSEL,ALL /SOLU$SOLVE /POST1 U0=UY(NODE(A/2,B/2,L/2)) NZX=NODE(A/2,0,L/2) *GET,SZ0,NODE,NZX,S,Z$*STAT