用NSORT命令获取最大应力点数据

  在ANSYS的结果后处理时,实体单元的应力结果显示时默认会用"MX"和"MIN"在图形中标出最大最小应力点位置,要知道最大(或最小)应力点的节点编号的话可通过PRNSOL命令列表查得。一般来讲,结构在不同工况下的最大应力点一般不在同一位置,如果工况较多或者要反复查询的话,这种方法就需要人为地反复记录最大(或最小应力节点号),比较繁杂。如果能够把最大(或最小)应力点的节点号动态地符给一个变量,通过APDL语言就可以随时求得最大(或最小)应力点的数据了。

  起初偶选择了一个最笨的方法,就是通过查询当前选择集中的所有节点的应力,然后进行遍历比较,同时记录下应力最大的那个节点号和应力值。实现命令流如下:

/POST1
NSEL,S,ALL
!...以上整理目标选择集

NNUM=NDINQR(0,13)        !当前选择集中的节点数目
*GET,N,NODE,,NUM,MIN          !获取选择集中最小节点号
N_MAX=N;            !当前应力最大节点号
*GET,SEQV_MAX,NODE,N,S,EQV    !当前最大应力

*DO,I,2,NNUM            !开始循环
*GET,TEMP,NODE,NDNEXT(N),S,EQV
*IF,TEMP,GT,SEQV_MAX,THEN    !比较大小
N_MAX=NDNEXT(N)
SEQV_MAX=TEMP
*ENDIF
N=NDNEXT(N)            !下一个节点
*ENDDO

!...以下可用n_max进行最大应力点数据的提取

  上面的命令流,由于需要反复对每一个节点进行遍历比较,如果节点数量较大时运算时间会比较长。其实,ANSYS中还提供了一个对节点数据进行排序的命令NSORT,借助它可以快速地实现上面命令流的功能,而且如果只查为了得到一个最大应力点的话,运算速度会很快。命令流如下:

/POST1
NSEL,S,ALL
!...以上整理目标选择集

NSORT,S,EQV,0,,1,SELECT        !结果按应力大小进行排序
*GET,N_MAX,NODE,0,NUM,MAX    !取得应力最大点的节点编号
NUSORT                !恢复缺省的排序方式
*GET,SEQV_MAX,NODE,N_MAX,S,EQV    !取得最大应力值

!...以下可用N_MAX进行最大应力点数据的提取

  关于NSORT命令的格式:

NSORT, Item, Comp, ORDER, KABS, NUMB, SEL
其中:
Item,Comp——排序的依据项标识,如S、LOC等;
ORDER——排序方式。默认为0,按降序,若为1按升序;
KABS——是否按绝对值进行排序。默认为0,不按绝对值排序,若为1按绝对值进行排序;
NUMB——排序后结果记录的个数。默认为所有节点,此数越少排序速度越快;
SEL——控制结果结点是否可以进行再次选择。如为空则不可选择(默认),如果排序后使用了NSEL等节点选择命令,则排序结果自动恢复为默认的排序方式;如为SELECT则当前节点选择集自动变为排序的结果记录结点,此时可用NSEL命令从当前选择集中进行进一步选择,如果节点不在排序后的选择集中,则也恢复默认排序方式。


【轻松一下】:记得以前有一个同事小王,在接一个客户电话时想问一下客户姓什么,竞豪不思索地说:你免贵姓什么?搞得我们哄堂大笑,其实像这种“低级错误”谁不会犯呢?看看这个笨人一箩筐吧,人有时候就要笨一点儿才显得可爱,是吧^_^