Tuesday, August 17, 2010

节点编号不连续时候,如何ANSYS遍历所有节点?zz

http://hi.baidu.com/simxpert/blog/item/5eda0a8eddfb75e5f01f36a5.html

在使用ANSYS的时候,经常会碰到一些大量的重复性操作,在GUI界面操作起来比较费时,甚至不可能,此时可以编写命令流来批量处理。
在编写疲劳处理命令流时,经常需要遍历所有当前选中的的节点,如果当前选中的节点编号是连续的,用一个简单的循环语句即可实现,如果当前选中的节点编号不连续,则需要添加其他语句。
下面一个非常简单的例子演示了如何在7号节点和所有其他当前选中的节点之间创建一个LINK10单元。
当然,这个例子只是起个示范作用,节点数目不多,手工生成也很快,但是,如果要批量生产上千个LINK10单元,用此命令流将非常方便。

n,1 , -0.50000 ,    0.15000    ,  0.0000       

n,3,  -0.45000   , -0.15000   ,   0.0000      

n,5  ,-0.25000   , -0.35000    ,  0.0000      

n,7 ,  0.15000  ,  -0.50000E-01  ,0.0000     

n,9  , 0.50000    , 0.55000    ,  0.0000    

n,10, -0.50000  ,   0.40000    ,  0.0000     

 
 

NSEL,U, , ,9

ET,1,LINK10

MP,EX,1,,2.1e5 

MP,PRXY,1,,0.3 

R,1,0.5, ,

 
 

!******************** 关键段 ******************

NNUM=NDINQR(0,13)        !

*GET,N,NODE,,NUM,MIN          !

 
 

*DO,I,1,NNUM            !开始循

*IF,N,NE,7,THEN

e,7,N

*ENDIF

N=NDNEXT(N)            !下一个节

*ENDDO

!***************** 关键段 *************************


注解:
关键点1:通过一个*DO循环语句,把7号节点与其他节点逐个联结成LINK10 单元。
关键点2:NNUM=NDINQR(0,13)  语句可以获取当前选集中所有节点的总书目,并保存在NNUM这个变量中,这个变量会在循环语句中用到。
关键点3:N=NDNEXT(N)    ,NDNEXT(N)函数是关键,这个函数的作用是返回当前选集中节点N的下一个节点(即当前选集中与N相邻的节点,按照某种顺序)。
关键点4:*IF,N,NE,7,THEN,此语句是一个判断语句,如果没有此语句,将会在节点7自身处也生成一个LINK10单元,这个单元是多余的,有了此判断语句,就可以把这个单元过滤掉。具体含义,查询帮助手册。

另外,LINK10单元是一种抗拉不抗压(或者抗压不抗拉)的单元,他的这种compression-only特性,往往可以用来近似模拟轴承滚珠(柱) 的抗压不抗拉特性,比如在风电行业中,可以在轴承中心节点和轴承内圈或者外圈的所有节点或者部分节点之间创建LINK10单元来反映轴承滚珠的 compression-only特性。
当节点数目总多时,使用此命令流可以大大提高工作效率

No comments:

Post a Comment