很多同学在使用ANSYS梁单元分析时,对其结果的输出方法一知半解,恰逢网上暂没有合适的总结性APDL,今日水哥略为总结一下常见情况梁单元的结果输出命令流,供大家参考。梁单元结果输出主要分成三个方面:
1、静态分析情况下的结果输出,也即/Post1模块范围内的输出;
2、瞬态分析情况下的结果输出,也即/Post26模块范围内的输出;
3、微观层面上的结果输出,也即截面积分点的结果输出。下面从三个方面分别阐述常见的结果输出命令。
命令流均以Beam188为例,杆单元思路相同,下面涉及到的单元表序号和项目自行查看help替换即可。
一、Post1下的结果输出在post1下,所有的结果都是静态的,也即结果没有时间效应,常见的使用情况如下:
1、关于当前数据库无结果数据的问题。
1)The requested S data is not availbale. The Plnsol command is ignored.
2) The requested database is not availbale. The Etable command is ignored.
上诉两个错误是很多同学经常遇到的问题,主要原因在于当前的结果数据库中没有指定具体的需要读取的荷载步,解决方法为在具体使用命令流之前需要用set命令指定即可。如:
/post1
allsel,all
set,last !指定读取最后一个荷载步的结果
plnsol,u,x
2、绘制位移云图、内力云图、应力云图
/post1
allsel,all
set,last
plnsol,u,sum !位移云图
!============
!绘制轴向应力
Etable,ZYL,smisc,31
Pletable,ZYL
!=============
!绘制轴向力
Etable,ZL,smisc,1
Pletable,ZL
3、绘制内力图,以绘制弯矩图为例
/post1
allsel,all
set,last
Etable,WJ1,smisc,2
Etable,WJ2,smisc,15
Plls,WJ1,WJ2
4、获取极值,以最大值为例
这里的极值是某个时刻 所有构件中的最大值,注意与下面瞬态分析中的极值区分开来。
1)获取位移极值
/post1
allsel,all
set,last
nsort,u,x,0,1 !可自行Help查看nsort使用方法
*get,Uxmax,sort,0,max !最大值获取
*get,Uxmaxd,sort,0,imax !最大值对应的编号获取
2)获取梁单元应力极值、内力极值,以轴向应力、弯矩为例
/post1
allsel,all
set,last
allsel,all
Etable,ZYL,smisc,31 !采用单元表获取轴向应力
Esort,etab,ZYL,0,0 !对单元表进行排序
*get,ZYL_max,sort,0,max !最大值获取
*get,ZYL_num,sort,0,imax !最大值对应的单元编号获取
!============
Etable,WJ,smisc,2 !采用单元表获取弯矩
Esort,etab,WJ,0,0 !对单元表进行排序
*get,WJ_max,sort,0,max !最大值获取
*get,WJ_num,sort,0,imax !最大值对应的单元编号获取
*请注意:上述命令流中,获取应力、内力等均是采用梁单元的 I 端结果,当然也可以按J端的结果进行查看,例如轴应力对应的选项是Smisc,编号31对应的是I端的结果,编号36对应的是J端的结果,具体可查看单元Help了解。在实际运用中,同学们可分别对比I端和J端的结果,一般不会相差很大,但若是单元长度较长,或者梁单元本身有线荷载情况下,应分别作图对比,最后结果取包络即可。
二、/Post26下的结果输出
与Post1不同,所有的26都是有时间效应的,所以命令流中都应指定具体的需要查看结果的单元或者节点编号,此处演示均以水哥ANSYS经典50讲课程中第29讲三维框架地震时程分析为例,查看位置为跨中节点或者单元。
1、获取103号节点位移位移、加速度响应、速度响应时程曲线
/Post26
allsel,all
nsol,2,103,u,x
nsol,3,103,v,x
nsol,4,103,A,x
plvar,2$plvar,3$plvar,4
2、获取71号单元内力、应力时程曲线,以弯矩、剪力、轴力为例,注意此时Esol命令中的node内容无效,同样是通过smisc后面的编号来指定I端或者J端内力。
/post26
allsel,all
Esol,5,71,,smisc,3 !弯矩
Esol,6,71,,smisc,5 !剪力
Esol,7,71,,smisc,1 !轴力
Esol,8,71,,smisc,31 !轴应力
plvar,5$plvar,6$plvar,7$plvar,8
3、获取某个节点或者单元在响应过程中的极值注意这里的极值是结构中的某个节点或者某个单元在整个时间过程中的极值,并不是所有结构节点或者单元的极值,注意与上述静态分析中的极值区分开来。(原创文章,转载请注明出处,关注微信公众号ANSYS结构院 ,查看更多干货文章)两种获取方式:
1)通过GUI方式获取在时间历程后处理器中,可直接查看最大值和最小值。
2)通过命令流获取,思路为将时间历程变量转为数组,写数组循环,根据需求获取最大值最小值。
/post26
!获取103号节点X方向位移时程.
Nsol,2,103,U,x
!获取总的荷载数,以确定需要定义数组的维度
*get,WD,active,0,solu,ncmls
*dim,Ux2,array,WD
!将变量转为数组
VGET,Ux2(1),2
Ux2_max=Ux2(1)
Ux2_min=Ux2(1)
*do,i,1,wd
!最大值判定
*if,Ux2_max,le,Ux2(i),then
Ux2_max=Ux2(i)
*endif
!最小值判定
*if,Ux2_min,ge,Ux2(i),then
Ux2_min=Ux2(i)
*endif
*enddo
*status,Ux2_max !最大值
*status,Ux2_min !最小值
4、获取整个结构 在整个响应过程中的极值与第三种情况不同,这种情况是获取整体结构的最大值,故而必须借助循环解决。思路为在上述第三种情况下外面在套一层循环获取整体结构的即可。
/post26
*get,Nodenum,node,0,count !获取节点数目
!存储所有节点在整个响应过程中的最大值
*dim,Node_max,array,nodenum
!存储所有节点在整个响应过程中的最小值
*dim,Node_min,array,nodenum
*do,kk,1,nodenum
Nsol,2,kk,U,x
!获取总的子步数,以确定需要定义数组的维度
*get,WD,active,0,solu,ncmls
*dim,Ux2,array,WD
!将变量转为数组
VGET,Ux2(1),2
Ux2_max=Ux2(1)
Ux2_min=Ux2(1)
*do,i,1,wd
!最大值判定
*if,Ux2_max,le,Ux2(i),then
Ux2_max=Ux2(i)
*endif
!最小值判定
*if,Ux2_min,ge,Ux2(i),then
Ux2_min=Ux2(i)
*endif
*enddo
Node_max(kk)=Ux2_max
Node_min(kk)=Ux2_min
UX2=
*enddo
!存储结构最大值和最小值
Umax=Node_max(1)
Umin=Node_min(1)
*do,i,1,nodenum
!最大值判定
*if,Umax,le,Node_max(i),then
Umax=Node_max(i)
*endif
!最小值判定
*if,Umin,ge,Node_min(i),then
Umin=Node_min(i)
*endif
*enddo
*status,Umax
*status,Umin
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删