标签:
杂谈 |
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