首页/文章/ 详情

ANSYS经典版APDL移动节点和单元应用举例

7月前浏览10586

 导读:

        本实例涉及的模型是一个信号传输系统的有限元模型,该模型主要由电缆(cable)和固定夹(clamp)组成。模型的特点是所有clamp的设计、划分网格方式均相同,且clamp数量有134个之多。故在生成模型时可以将一个已经划分好网格的clamp“复 制”并“粘贴”到期望的位置,方便快捷,省去重复构建134个clamp的繁杂劳动。本文将重点讲解如何用APDL语言实现clamp的“复 制粘贴”。


 1.png

前期工作:

        在进行clamp的“复 制、粘贴”之前,做了一些前期准备工作,这里只做简单描述,这些工作非本文重点。

1,cable的模型已构建完成。

2,已将一个clamp作为原始clamp,将其划分好网格,并建立局部坐标系,坐标系编号为11。

2.png


3,已在模型中构建134个局部坐标系,编号为1011~1144,这些局部坐标系标明了“粘贴”clamp的所有期望位置。


 3.png

APDL解释

/PREP7

!打开ansys前处理模块。在ansys经典版本中,有前处理模块、求解器模块、后处理模块等。在使用某个模块的功能前,必须先打开对应的模块。

 

CSYS,11

!激活局部坐标系11,即原始clamp的坐标系。

 

CMSEL,S,CLAMP

!选择原始clamp的 所有元素。

 

NSLE,S,1

!选择与原始clamp元素相关的节点。

 

*GET,NUMNODE1,NODE,,COUNT

*GET,MINODE1,NODE,,NUM,MIN

!获取上述节点的节点总数,赋值给NUMNODE1。获取上述节点的最小的一个节点编号,赋值给MINODE1。这两个语句在做*Do循环时是经常用到,是很实用的两个*Get语句,经常一起出现。关于*Get的用法形式有很多,其主要功能是赋值,其他的用法可查看ANSYS的help文档。个人认为*Get是个相当重要的APDL命令。

 

*DEL,NODE11,,NOPR

!严谨起见,如果在Database中已有叫做NODE11的数组存在,会先删除该数组。

 

*DIM,NODE11,ARRAY,NUMNODE1,4

!定义数组NODE11,此数组的维度是NUMNODE1(原始clamp的节点总数)个横行,4个竖列。定义此数组将用于储存原始clamp以及复 制出的新clamp的所有节点的节点编号、x坐标、y坐标、z坐标。下文中将有该数组的图解及详细解释。

 

*DO,I,1,NUMNODE1,1

!开始Do循环,循环变量是I,从1开始,到NUMNODE1为止,每次循环I递加1。对原始clamp的所有节点做循环。

NODE11(I,1)=MINODE1

!将节点编号存入数组NODE11

 

*GET,NODE11(I,2),NODE,MINODE1,LOC,X

!将节点的x坐标存入数组NODE11。注意,之前的语句已激活了原始clamp的局部坐标系11,故此处是在局部坐标系11下的x坐标值。在操作坐标值时,务必要弄清楚坐标值是在哪个坐标系下的,在实际工作中,这一点很容易出错。下面的y、z坐标同理。

 

*GET,NODE11(I,3),NODE,MINODE1,LOC,Y

!将节点的y坐标存入数组NODE11

 

*GET,NODE11(I,4),NODE,MINODE1,LOC,Z

!将节点的z坐标存入数组NODE11

 

MINODE1=NDNEXT(MINODE1)

某个节点循环完成后,将集 合中下一个节点编号赋值给MINODE1,然后开始下一次循环。NDNEXT(节点编号)是找到某个节点集 合的下一个节点的节点编号的命令。在实际工作中,还会对元素编号进行循环,会用到ELNEXT(element 编号)的命令,作用是找到某个元素集 合的下一个元素的元素编号。这两个用法很常见。

 

*ENDDO

!结束循环。至此,已将原始clamp的所有节点的节点编号、x坐标值、y坐标值、z坐标值存储至数组NODE11中。

 

*CREATE,MOVE_CLAMP

! *CREATE是创建宏文件的命令,此处创建了名为MOVE_CLAMP的宏文件。以下至*END命令为止,是宏文件的详细内容。下文中将用*USE命令调用该宏文件。

 

ALLS ALL

!此命令用于选择模型中所有的集 合,包括所有的节点、元素、keypoint、线、面等。

*GET,NODEMX,NODE,,NUM,MAX

!获取模型中最大的节点编号,赋值给变量NODEMX

 

*VFILL,NODE11(1,1),RAMP,NODEMX+1,1

*VFILL用于填充数组。数组NODE11的结构如下图,该数组有名为loop的参数,即每行的行号。此处*VFILL是要将节点编号这一竖列重新填充,填充时每行的计算规则为:((NODEMX+1)+(n-1)*1),即NODEMX+n,其中n为该行对应loop编号。这个操作的作用是产生了新的clamp的节点编号。


 4.png

CMSEL,S,CLAMP

!选择原始clamp的所有元素

 

NSLE,S,1

!选择上述元素对应的所有节点。

 

NGEN,2,NODEMX,ALL, , , , , ,1,

!在原始clamp的位置处复 制其所有节点,新节点的节点编号将与数组NODE11的新节点编号一一对应。

 

EGEN,2,NODEMX,ALL, , , , , , , , , , ,

!在原始clamp的位置处复 制其所有的元素。

 

CMSEL,U,CLAMP  

!此时选中的元素包括原始clamp的元素和新复 制出来的元素,用CMSEL,U,CLAMP命令不选择原始clamp的元素,则剩下的就是新复 制出来的元素。

 

CM,CLAMP_%ARG1%,ELEM

!将新复 制出来的元素命名为CLAMP_%ARG1%,即新的clamp。此时新复 制出的clamp跟原始clamp处在同一位置,完全重合在一起,下面的命令流将会把新clamp移至期望的位置。此处的%是起连字符作用。如,若ARG1=1011,则此时为CLAMP_1011。ARG1是在模型中构建的局部坐标系的编号。在使用宏文件时,ARG1将会被分别赋值1011~1144。

 

NSLE,S,1

!选择集合CLAMP_%ARG1%元素对应的所有节点。

 

CSYS,ARG1

!激活局部坐标系ARG1

 

/NOPR

SHPP,OFF

!关闭元素形状检查。将新clamp移至期望位置的过程中,节点是逐个移动的。当某个节点移动时,该节点组成的元素将产生形状畸变,此时ansys就会报错,命令流无法继续移动下一个节点。故此处关闭元素形状检查。

/NERR,0,100000000, ,0,0,

 

*DO,TT,1,NUMNODE1,1

!对所有复 制出的新的clamp节点进行循环。循环变量是TT,循环NUMNODE1(新clamp的节点总数)次,每次循环TT递加1。

 

NMODIF,NODE11(TT,1),NODE11(TT,2),NODE11(TT,3),NODE11(TT,4)

!此时已经激活局部坐标系ARG1,此时NODE11第一竖列储存的节点编号也是复 制出的新节点编号。在局部坐标系ARG1下,NMODIF命令将所有新节点移至x= NODE11(TT,2)、y= NODE11(TT,3)、z= NODE11(TT,4)的位置处。节点构成的元素也将随之移动至期望位置。至此,一个新的clamp的节点和元素移动完成。

 

 *ENDDO

/NERR,5,1000000, ,0,5,

/GOPR

SHPP,ON

!重新开启元素形状检查。

*END

!宏文件编辑结束

 

*DO,KK,1011,1144,1

!对所有局部坐标系进行循环,循环变量KK初始值为1011,终了值是1144,每次循环KK递加1,从1011至1144循环134次。

*USE,MOVE_CLAMP,KK

!*USE使用宏文件,MOVE_CLAMP是宏文件名称,即上文中用*CREATE命令生成的宏文件。KK是带入的参数,即ARG1,表示不同的局部坐标系编号。注意:使用宏文件时,功能是很强大的,其格式为 *USE,FILE_NAME, ARG1, ARG2, ARG3… 即可以加若干个不同参数,此例中只用了一个参数。

*ENDDO

!循环结束,所有clamp“复 制粘贴”完成。

 

 

 


ANSYS 其他
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2019-11-13
最近编辑:7月前
Ansys爱好者--冯
签名征集中
获赞 9粉丝 25文章 2课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈