利用APDL命令选择椭球面上的节点
2017-09-15 by:CAE仿真在线 来源:互联网
问题的背景:笔者在利用Workbench的二次开发功能实现某模型的参数化建模、分网、加载时,由于workbench开发接口的限制,需要结合DM模块、MAPDL模块、Mesh模块、FEM模块以及Mechnical模块。
在结合这些模块的时候,为了实现参数化一键加载,需要在Mechnical模块通过APDL和XML(ACT技术)完成加载功能,而Mechnical模块里面的模型其实只有节点和单元,因此,在Mechnical模块添加的APDL命令只能是对节点或者单元进行操作。
该模型有圆柱面和椭球面,圆柱面的节点其实比较好通过APDL选取,利用圆柱坐标系即可,但是椭球面上的节点则无法直接选取。
至此,问题便产生了,如何利用APDL在只有节点和单元的模型上选取椭球面上的节点。
局部模型如下所示。
图1 单元模型
图2 节点
笔者所想选取的节点是图2中的最内层的节点,该群节点所对应的几何模型是一个标准的椭球形,椭球形状参数比为2:2:1。
该问题最大的障碍便是没有几何,只有节点和单元,如果有几何的话,那么可以直接通过参数选择面,再选择依附在面上的节点即可。
如何解决该问题?
首先,笔者尝试通过在前期划分网格时添加一种额外的单元,mesh200,这是一个比较特殊的单元,有兴趣的可以查查资料,先将该面单独用mesh200进行网格划分,之后对全部模型采用solid185进行划分。
划分完成后,模型导入Mechnical模块,可以通过单元类型的方式直接选出所要的节点,而且选择过程非常非常的方便和快捷。但是,mesh200单元只是用于网格划分,不支持载荷和约束,也即是无法在这些节点上加载,这对于最终问题就显得无效了。
显然,该方法虽然能够选出所要的节点,但是却不能解决加载的问题,只能放弃。
至此,笔者只能尝试采用椭球本身的位移约束方程来选择了。
众所周知,标准椭球的方程为:
在本次模型中,a=c=2b=Ri,因此,本模型的椭球面方程为:
也即是,椭球面上节点的(x,y,z)坐标肯定是满足上述方程的,那么可以通过读取节点的坐标值,代入上述方程计算,判断是否满足,如果满足,那么就是所需要的节点,不满足就不是。
基于此原则,可以写出APDL命令的思路:
获取总节点数目
循环遍历
获取当前的最小节点号
获取该节点的三个坐标值
计算椭球方程
逻辑判断
如果该节点满足椭球方程,则存入数组
舍弃当前节点
之后,通过遍历存储的数组,可以选出所有满足椭球方程的节点。
具体的APDL实现过程如下:
alls,all
csys,0
nsel,r,ext
nsel,r,loc,y,0,Body_Ri/2
tol=1e-6
j=0
*get,Total_node,node,0,count
*Dim,inner_node,array,Total_node,1
*do,i,1,Total_node,1
*get,node_min,node,0,num,min
ux=nx(node_min)
uy=ny(node_min)
uz=nz(node_min)
temp=(ux**2+uz**2+4*uy**2)/Body_Ri**2-1
abs_temp=abs(temp)
*if,abs_temp,lt,tol,then
j=j+1
inner_node(j)=node_min
*endif
nsel,u,,,node_min
*enddo
alls,all
nsel,r,,,inner_node(1)
*do,k,2,j,1
nsel,a,,,inner_node(k)
*enddo
注:定义了一个较小的变量tol=1e-6,主要是考虑可能存在一定的误差,是节点的坐标不能完全符合椭球方程,这个属于正常现象,稍加考虑即可。
最终运行该段APDL代码,可以选出所需要的最内层的节点,如下所示。
图3 选择节点
利用esln命令,选出该群节点所存附的单元,如图4所示,所见就一层单元。
图4 节点存附的单元
相关标签搜索:利用APDL命令选择椭球面上的节点 Ansys有限元培训 Ansys workbench培训 ansys视频教程 ansys workbench教程 ansys APDL经典教程 ansys资料下载 ansys技术咨询 ansys基础知识 ansys代做 Fluent、CFX流体分析 HFSS电磁分析 Abaqus培训