星期日, 十一月 12, 2006

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


没有评论: