ansys查轴力弯矩新版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
查轴力:首先定义单元表grneral postproc>element table >define table add 左侧选by sequence num,右侧选择smisc, 在下面输入smisc,1 然后在plot results>contour plot》line elem res 查看
弯矩
1.绘制弯矩图
建立弯矩单元表。例如梁单元
i节点单元表名称为imom,j节点单元表名称为jmom,
ETABLE,NI,SMISC,1 !单元I点轴力
ETABLE,NJ,SMISC,7 !单元J点轴力
ETABLE,QI,SMISC,2 !单元I点剪力
ETABLE,QJ,SMISC,8 !单元J点剪力
ETABLE,MI,SMISC,6 !单元I点弯矩
ETABLE,MJ,SMISC,12 !单元J点弯矩
plls,MI,MJ
2.标注弯矩图
PLOTCTRLS>>NUMBERING>>SVAL ON即可在画出弯矩图的同时在图上标出弯矩值的大小
3.调整弯矩图
如果弯矩图方向错误,则绘制弯矩图命令为
plls,imom,jmom,-1
同一个节点处两边的单元内力有细微差别,
导致内力数字标注出现重影。观察上面整体轴力图也可以发现,
一段一段的,好像马赛克,其实上面整体弯矩图也是,不过不是
很明显罢了。这是EULER-BEONOULI梁理论以及ANSYS输出定义造成
的(详细原因就不展开了,看看梁理论的书和ANSYS的说明吧)。
为了修正重影和节点两边内力值不一样的问题,遍制了宏文件ITFAVG.MAC
命令文件内容如下:
!---------------------------------------------------------------------
!宏:ITFAVG.MAC(INTERNAL FORCE AVERAGE MACRO)
!获取线性单元内力,并对单元边界处的内力进行平衡
!输入信息
!内力类型:MFORX,MFORY,MFORZ,MMOMX,MMOMY,MMOMZ
*ASK,ITFTYPE,'PLEASE INPUT THE TYPE OF INTERNAL FORCE','MMOMY'
!需处理的单元包
*ASK,EASSEMBLY,'PLEASE INPUT THE COMPONENT NAME OF ELEMENTS TO BE PROCESSED!',
'EOUTER'
!需处理的节点包
*ASK,NASSEMBLY,'PLEASE INPUT THE COMPONENT NAME OF NODE TO BE PROCESSED!','NOU TER'
!无需处理的节点包
*ASK,UNASSEMBLY,'PLEASE INPUT THE COMPONENT NAME OF THE UNCHANGED NODE!(NONE I F THERE'S NO SUCH COMPONENT)','NONE'
/POST1
!输入信息:内力类型,欲处理单元的集合,欲处理节点的集合
!ITFTYPE='MMOMY'
!EASSEMBLY='EOUTER'
!NASSEMBLY='NOUTER'
!按内力类型确定ANSYS输出信息SMISC的编号
*IF,ITFTYPE,EQ,'MFORX',THEN
ITFINUM=1
ITFJNUM=7
*ELSEIF,ITFTYPE,EQ,'MFORY',THEN
ITFINUM=2
ITFJNUM=8
*ELSEIF,ITFTYPE,EQ,'MFORZ',THEN
ITFINUM=3
ITFJNUM=9
*ELSEIF,ITFTYPE,EQ,'MMOMX',THEN
ITFINUM=4
ITFJNUM=10
*ELSEIF,ITFTYPE,EQ,'MMOMY',THEN
ITFINUM=5
ITFJNUM=11
*ELSEIF,ITFTYPE,EQ,'MMOMZ',THEN
ITFINUM=6
ITFJNUM=12
*ELSE
*ENDIF
!对不需平均的节点进行处理
*IF,UNASSEMBLY,NE,'NONE',THEN
!选出不进行处理的节点包并获取不进行处理节点的数目
CMSEL,S,UNASSEMBLY
*GET,UNNODNUM,NODE,0,COUNT
!定义长度为UNNODNUM的数组(UNNOD),以存放选中单元的单元编号
*DIM,UNNOD,ARRAY,UNNODNUM
!将选中单元的编号按顺序存入数组UNNOD
*DO,I,0,UNNODNUM-1,1
UNNOD(I+1)=NDNEXT(I)
*ENDDO
UNNODNUM=0
*ENDIF
!选出所需的单元和节点包
CMSEL,S,EASSEMBLY
CMSEL,S,NASSEMBLY
!获得当前选中单元总数(存入变量SELELENUM)
*GET,SELELENUM,ELEM,0,COUNT
!定义长度为SELELENUM的数组(ELENUM),以存放选中单元的单元编号
*DIM,ELENUM,ARRAY,SELELENUM
!将选中单元的编号按顺序存入数组ELENUM
*DO,I,0,SELELENUM-1,1
ELENUM(I+1)=ELNEXT(I)
*ENDDO
!获得当前选中节点总数(存入变量SELNODNUM)
*GET,SELNODNUM,NODE,0,COUNT
!定义长度为SELNODNUM的数组(NODNUM),以存放选中单元的单元编号*DIM,NODNUM,ARRAY,SELNODNUM
!将选中单元的编号按顺序存入数组NODNUM
*DO,I,0,SELNODNUM-1,1
NODNUM(I+1)=NDNEXT(I)
*ENDDO
!定义所需的线性单元内力ETABLE,节点I的内力存入数组ITNFI,
!节点J的内力存入数组ITNFJ
ETABLE,ITNFI,SMISC,ITFINUM
ETABLE,ITNFJ,SMISC,ITFJNUM
!定义所需的结果数组,并将其置零
ETABLE,ITNFINEO,SMISC,5
SADD,ITNFINEO,ITNFI,,1
ETABLE,ITNFJNEO,SMISC,11
SADD,ITNFJNEO,ITNFJ,,1
*DO,K,1,SELNODNUM,1
!处理不需平均的节点
INDEX=0
*IF,UNNODNUM,GE,1,THEN
*DO,J,1,UNNODNUM
*IF,NODNUM(K),EQ,UNNOD(J),THEN
INDEX=1
*ELSE
*ENDIF
*ENDDO
*ELSE