加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ANSYS中GET的运用

(2014-11-20 20:59:14)
标签:

杂谈

NSEL,S,LOC,Z,1               ! 提取z=1面上的所有节点

*GET,N_TOTAL,NODE,,COUNT     ! 计算提多了多少个节点,并把这个数字赋值给变量N_TOTAL

*DIM,NUM,ARRAY,N_TOTAL       ! 根据N_TOTAL的大小,定义一个存储N_TOTAL个数的数组num

*GET,NUM(1),NODE,,NUM,MIN    ! 提取数组num中的最小的节点编号,并放在数组的第一个位置,也就是num(1),这里

DO,I,2,N_TOTAL               ! 定义一个循环语句,I从2开始到选择的这部分节点的最大数N_TOTAL停止,因为第一个最小的已经放在num(1)第一个位置了,所以没有必要再放一次,就从第二个开始了,            
*GET,NUM(I),NODE,NUM(I-1),NXTH  ! 这句的功能就是提取NUM(I-1)这个节点编号的下一个节点编号,然后赋值给NUM(I),因为不能保证这个面上的节点都是像123..等等是递增的,有可能是1,2,5...,所以就选择下一个(NXTH)来提取,这样如果是提取下一个,那么当2提取完的时候就可以提取到5了,5就是2的下一个了!

*ENDDO                        ! 终止循环

原文地址:ansys 怎样提取某个节点的    原文作者:半个窝头

1. 最简单的办法是使用NSORT,打印出结果,可以通过控制使其输出到文件
2. 使用apdl能复杂一点,下面是以前经常用的一段命令流,参考着修改一下吧
*CREATE,GET_node_inf,mac, 
*GET,Nnod,NODE,0,COUNT         !获取所选择的节点总数
*DIM,S_Xyz,ARRAY,NNOD,5        !定义1个数组存放数据
*GET,Nd,NODE,0,NUM,MIN         !获取最小的节点编号
*DO,I,1,Nnod,1 
S_Xyz(I,1)=Nd                  !将节点列表放数组第1列
S_Xyz(I,2)=NX(Nd)              !节点的X坐标放数组第2列
S_Xyz(I,3)=NY(Nd)              !节点的Y坐标放数组第3列
S_Xyz(I,4)=NZ(Nd)              !节点的Z坐标放数组第4列 
!*GET,S_Xyz(I,5),NODE,ND,S,EQV  !节点的 von mises值放数组第5列
*GET,S_Xyz(I,5),NODE,ND,U,SUM !节点的总变形值值放数组第5列
Nd=NDNEXT(Nd)                  !读出下一个节点编号
*ENDDO 
*END

*CREATE,OUT_node_inf,mac, 
*CFOPEN,node_info,txt,,
*VWRITE,S_Xyz(1,1),S_Xyz(1,2),S_Xyz(1,3),S_Xyz(1,4),S_Xyz(1,5) 
(F10.0,3F15.4,E15.5)  
*CFCLOS
*END

GET_node_inf
OUT_node_inf
/delete,GET_node_inf,mac
/delete,OUT_node_inf,mac

另附

1.先对节点的值进行SORT,在提取最大的值即可。

最大应力节点编号及其数值的提取:

ALLSEL

NSORT,S,EQV,0,0,ALL

*GET,MAX_SEQV,SORT,0,IMAX

*GET,MAXSEQV,NODE,MAX_EQV,S,EQV

依次类推,可以最大应变节点编号及其值数值的提取:

ALLSEL

NSORT,EPTO,EQV,0,0,ALL

*GET,MAX_EPTOEQV,SORT,0,IMAX

*GET,MAXEPTOEQV,NODE,MAX_EPTOEQV,S,EQV

最大位移节点编号及其数值的提取:

ALLSEL

NSORT,U,SUM,0,0,ALL

*GET,MAX_U,SORT,0,IMAX

*GET,MAXU,NODE,MAX_U,U,SUM

2.如把所有的节点应力应变数值提取然后找最大值

*GET,NUMALL,NODE,0,COUNT

*GET,NUMSTART,NODE,0,NUM,MIN

      SMAX=0

      INUSE=NUMSTART

*DO,I,1,NUMALL,1

      *GET,SSUM,NODE,INUSE,S,EQV

      *IF,SMAX,GE,SSUM,THEN

                  SMAX=SMAX

      *ELSEIF,SMAX,LT,SSUM,THEN

                  SMAX=SSUM

       *ENDIF

INUSE=NDNEXT(INUSE)

*ENDDO

3.首先在窗口上显示应力应变云图,然后利用GET命令得到最大值。

如提取最大应力为:

PLNSOL,S,EQV,0

*GET, PAR, PLNSOL, 0, MAX

或将所有的节点定义成一个路径,*GET, PAR, PATH, 0, MAX,

另:获取结果各个时间点的最大应力值

*DIM,MAXSEQVNODE,TABLE,63,1,1,,,     !定义数组

*DO,ISET1,1,63,1     !根据结果存储的数目而定,如63

/POST1

SET,1,,1,,,,ISET1,

PLNSOL,S,EQV,0

*GET,MAXSEQV_NODEI,PLNSOL,0,MAX    !获取结果,这里是最大MISES等效应力

*SET,MAXSEQV_NODE(ISET-1,0,1),(ISET-1)*4E-4      !确定对应的时间

*SET,MAXSEQV_NODE(ISET-1,1,1),MAXSEQV_NODEI     !写入最大等效应力值

*ENDDO

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有