ANSYS计算节点内力的宏
今天根据ansys.net上的一个宏稍微修改了一下,做了一个计算节点内力的宏,贴在下面。这个宏的原始作者是Shen-Yeh Chen。这里是原始描述和原始宏。
这个宏可以计算指定节点上的内力。通常情况下,ANSYS只计算被限定自由度的节点的反应力。如果模型里有两个材料,并且这两个材料用连续网格模拟(而不是接触),有些时候我们想知道这两个材料间的相互作用力,而在ANSYS里面并没有直接的命令。使用这个宏可以做到这一点。
这个宏的使用法方法是:0.当然是把这个宏命名并放在相应的目录下;1.选择要计算内力的节点;2.选择这些节点一边的单元,因为这些节点代表一个截面,而这个截面会有两边有单元。选择不同的边,内力的方向是不同,如果两边都选的话,内力就会平衡为零了。因此必须要先选择一边,但是不必要只选和节点相邻的一层,因为宏里面已经有命令去选择和节点相连的单元;3.运行宏;4.在工作目录下,会有一个x_nfor2f.ans文件,这个文件的最后一行,就是在x,y,z三个方向的内力分量了。
这个宏必须要在通用后处理器中运行。
! ========================================
! Shen-Yeh Chen
! 05/01/1998
! 12/10/2001
! =========================================
!
! This macro will transfer the element force on the selected
! node into cross-section force on each node, and write
! all the force on each node into the "F" command. Note that
! the macro go through each SELECTED node, sum up all SELECTED
! elements that are attached to the SELECTED node. Then the
! force on each nodes is added a negative sign and printed
! into the 'F' command.
! ---------------------------------------------------------
! Syntax :
! x_nfor2f
!
! Input :
! None
!
! Output :
! file : x_nfor2f.ans : nodal force for the section load
! x_nfor2f.cdb : nodal force & nodal coordinates/ID in
! CDB format
! nodal components : x_nfor2f : defined in x_nfor2f.cdb
! X_NFOR2F_FX : summation of FX
! X_NFOR2F_FY : summation of FY
! X_NFOR2F_FZ : summation of FZ
! Temporary components
! X_NFOR2F
! X_NFOR2F_E
!
! Temporary components
! x_nfor2f.db
!
! Temporary variables
! AR30,AR31,AR32,AR33
!
! External Programs called
! None
!
!
! ========================================
/POST1
*GET,ZNNODE,NODE,,NUM,MAX
CM,X_NFOR2F,NODE
CM,X_NFOR2F_E,ELEM
ESLN,R
!
AR30=0
*CFOPEN,x_nfor2f,ans
*VWRITE
('/PREP7')
X_FOR2F_FX=0.0
X_FOR2F_FY=0.0
X_FOR2F_FZ=0.0
!
! LOOP THROUGH ALL SELECTED NODES
:LINE01
AR30=NDNEXT(AR30)
*IF,AR30,EQ,0,THEN
*GO,:LINE02
*ENDIF
NSEL,R,NODE,,AR30
FSUM
!
!
! GET THE FORCE
*GET,AR31,FSUM,0,ITEM,FX
*GET,AR32,FSUM,0,ITEM,FY
*GET,AR33,FSUM,0,ITEM,FZ
!
AR31=-AR31
AR32=-AR32
AR33=-AR33
X_FOR2F_FX=X_FOR2F_FX+AR31
X_FOR2F_FY=X_FOR2F_FY+AR32
X_FOR2F_FZ=X_FOR2F_FZ+AR33
!
! WRITE TO FILE
*VWRITE,AR30,AR31
('F,',F6.0,',FX,',E12.5)
*VWRITE,AR30,AR32
('F,',F6.0,',FY,',E12.5)
*VWRITE,AR30,AR33
('F,',F6.0,',FZ,',E12.5)
!
! SELECT THE NODES
CMSEL,,X_NFOR2F
*GO,:LINE01
!
!
! SAVE THE STATE TO x_nfor2f.db
:LINE02
*VWRITE,X_FOR2F_FX,X_FOR2F_FY,X_FOR2F_FZ
('FX = ',E12.5,', FY = ',E12.5,', FZ = ',E12.5)
*CFCLOS
没有评论:
发表评论