ANSYS使用APDL数组实现节点坐标大小排序,并返回其对应的节点编号

  • Post author:
  • Post category:其他




ANSYS使用APDL数组实现节点坐标大小排序,并返回其对应的节点编号


注:节点组件node_cm中的所有节点都在一条直线上,即所有节点坐标的三个分量有两个是相同的,假设节点组件在空间中的位置平行于x轴,y,z坐标为常数,分别为node_y,node_z

/prep7
cmsel,s,node_cm    !选择一个节点组件       
*get,firstnodenum,node,0,num,min !获取最小的节点编号
*get,totalnodenum,node,0,count    !获取节点总数

!一维数组node_bh存储每一个模型节点的编号 
*dim,node_bh,array,totalnodenum,1
node_bh(1,1)=firstnodenum    
x=firstnodenum
*do,i,2,totalnodenum
	x=ndnext(x)
	node_bh(i,1)=x
*enddo

!一维数组node_x存储每一个模型节点的x坐标
!一维数组sort_x与node_x中包含的元素均相同
!不同的仅仅是sort_x在node_x的基础上对节点x坐标值从小到大进行了排序

*dim,sort_x,array,totalnodenum
*dim,node_x,array,totalnodenum
*do,i,1,totalnodenum
	node_x(i,1)=nx(node_bh(i,1))
*enddo
*vscfun,xmax,max,node_x
*do,i,1,totalnodenum
 *vscfun,sort_x(i,1),min,node_x
 *do,ii,1,10
   *if,sort_x(i,1),eq,node_x(ii,1),then
     node_x(ii,1)=xmax     !这里所有的node_x均被赋值为其最大元素值(略显冗长,但是可以顺利实现排序功能)
     *exit  
   *endif
 *enddo
*enddo

!一维数组node_xbh与node_bh的区别
!一维数组node_bh存储每一个模型节点的编号,按照节点编号的大小排列在数组中
!一维数组node_xbh存储每一个模型节点的编号,按照节点x坐标值的大小排列在数组中

*dim,node_xbh,array,totalnodenum,1
*do,i,1,totalnodenum
	node_xbh(i,1) = node(sort_x(i,1),node_y,node_z)   !将排好序的节点坐标值还原为节点编号
*enddo

!至此,使用APDL数组实现了对节点坐标大小排序,并返回其对应的节点编号,由一维数组node_xbh存储


小白学习笔记,希望大家多提建议,如果感兴趣,欢迎私信交流……!



版权声明:本文为weixin_43717845原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。