终极耦合方案_第1页
终极耦合方案_第2页
终极耦合方案_第3页
终极耦合方案_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ANSYS耦合终极解决方案TAG ANSYS,学习,有限元I由长河发表于:2009-12-17 19:20这两天很忙,源于自己对论文中可能出现的问题估计不足,不过话说回来,很多 问题着实也是在实践过程中才发现其中奥秘。不过这段时间效率低下是一定的 了,想必和网上多了有很大关系。看来是我真正下决心息网的时候到了,成功的 前提是有选择性地放弃,看来这句话是对我说的。而且,看着即将完成的一篇论 文,怎么看怎么像是我写博客的风格,冏。博客对生活影响真大啊!好了,言归正传,刚才在仿真论坛发现了一篇好贴高效耦合小程序,si13俨 然是个天才,程序写得太牛了,我读了三遍才理解其中奥秘,不禁啧啧称奇。对 其作

2、品更是五体投地,相当佩服。首先来围观下面si13编写的APDL代码: 说明:其中加粗的部分需要根据不同的分析自行修改。!*allsel!最好保留这句命令!*将从属节点编号依次存入数组*cmsel,s,slavenode*get,count1_node,node,0,count*del,slave_node*dim,slave_node,array,count1_node*get,slave_node(1),node,0,num,min*do,i,2,count1_nodeslave_node(i)=ndnext(slave_node(i-1)*enddo!*将主节点编号依次存入数组*allse

3、l cmsel,s,masternode*get,count2_node,node,0,count*del,master_node*dim,master_node,array,count2_node*get,master_node(1),node,0,num,min*do,i,2,count2_nodemaster_node(i)=ndnext(master_node(i-1)*enddo *del,cp_node!*将与从属节点耦合的节点数组初始化*dim,cp_node,array,count1_node*do,i,1,count1_nodecp_node(i)=0*enddo !*开始选

4、择程序 allsel cmsel,s,masternode *do,i,1,count1_node kk=1k=1*dowhile,kkk=nnear(slave_node(i) nsel,s,cp,all kk=nsel(k)+0.001allselcmsel,s,masternode nsel,u,node,k cm,masternode,node *enddocp_node(i)=k *enddo !*选择完毕 !*开始耦合 allsel,all /prep7*do,i,1,count1_nodecp,next,UX,slave_node(i),cp_node(i)cp,next,UY,

5、slave_node(i),cp_node(i)cp,next,UZ,slave_node(i),cp_node(i)*enddo !*耦合完毕过去常见的耦合命令,主要分三步(以钢筋与混凝土耦合为例):选择钢筋线上的节点;通过新定义的数组,对这些节点进行排序;用一个循环,是这些钢筋上的节点与其周围最近的节点进行耦合 最常见的耦合命令流如下(这是我两年前做另一个课题的时候用的):cmsel,s,ouhe*get,max1,node,0,count !取得节点数目*dim,steel,max1 !定义“节点数”长度的数组*get,nod1,node,0,num,min !最小节点编号定义给 nod

6、1 stee l(1)=nod1 !数组第一个位置是最小节点的编号 *do,i,2,max1 !对数组进行排序 steel(i)=ndnext(steel(i-1)*enddo allselnsel,all !选择全部节点jjT*do,i,1,max1 !对数组中的节点,一一与周围和它最近的节点进行耦合cp,jj,ux,steel(i),nnear(steel(i)cp,jj+1,uy,steel(i),nnear(steel(i)cp,jj+2,uz,steel(i),nnear(steel(i)jj=jj+3*enddo这样做其实是很大弊端的,还是拿钢筋混凝土举例:用上面的代码,容易使得钢

7、 筋上的节点与钢筋上另外的节点、或者与混凝土中两个节点进行耦合一一也就是 说,会出现一对多的情况,而这在耦合中是不允许的。在我两年前的那次分析,做的是一个组合结构,不是钢筋混凝土,而且我在网格 划分的时候,特别注意了让参与耦合的两对节点距离比其他节点更接近。这样就 使得用上面的命令实现完美一对一耦合。但在网格不好控制的时候,麻烦可就大 了。所以后来见过一种改进的方法,将混凝土中的节点也进行排号,然后进行与钢筋 节点进行耦合。这样成功地避免了自己耦合自己的情况,但已经耦合过的节点二 次被耦合,则依然容易出现。si13的这套命令流,应该是把所有问题都解决了,perfect!下面对他的程序详细 地研

8、究研究,学习一下他的编程思想,所以有必要把他的程序再写一遍 为了便于理解,下面仍以钢筋与混凝土耦合为例,不再区分主节点与附节点。 allsel!全部选择!将钢筋中节点存入数组cmsel,s,slavenode !选择钢筋节点*get,count1_node,node,0,count !得到钢筋节点的总数*del,slave_node !清空数组变量,相当于 slave_node=*dim,slave_node,array,count1_node !定义用来“盛装”钢筋节点的数组*get,slave_node(1),node,0,num,min !开始对钢筋节点进行排序,并存入数组 *do,i,

9、2,count1_nodeslave_node(i)=ndnext(slave_node(i-1)*enddo!*下面是将混凝土中节点存入数组,方法同上,于是就不解释了allselcmsel,s,masternode*get,count2_node,node,0,count*del,master_node*dim,master_node,array,count2_node*get,master_node(1),node,0,num,min*do,i,2,count2_nodemaster_node(i)=ndnext(master_node(i-1)*enddo!*新定义一个数组,专门用来存放

10、混凝土中参与耦合的节点编号*del,cp_node*dim,cp_node,array,count1_node*do,i,1,count1_nodecp_node(i)=0*enddo叶最精妙的核心代码来啦allselcmsel,s,masternode!选择混凝土中的节点!外层循环是为了给cp_node数组赋值,所以数组中元素个数为钢筋节点数 *do,i,1,count1_nodekk=1k=1!内层循环是为了判断钢筋最近的节点是否已经参与过耦合*dowhile,kk!循环条件,若kk0则循环继续,若kk=0则循环终止k=nnear(slave_node(i) !将距钢筋中第i个节点最近的节

11、点编号赋给k nsel,s,cp,all !选择所有已经耦合的节点,这种用法我是第一次看到 kk=nsel(k)+0.001!若上面的节点k不曾参与过耦合,则nsel命令不能将其选中,此处nsel(k)=-1,kk=-0.9990,循环继续, 查找其他与第i个钢筋节点最近的混凝土节点的情况。allselcmsel,s,masternode !选择混凝土节点nsel,u,node,k!排除出刚才确定的准备参加耦合的混凝土节点cm,masternode,node!重新定义混凝土节点选择集,这是为了下次选择节点的时候,不将已经判读过的节点放在考虑之列*enddocp_node(i)=k!将经过判断的k点编号赋予给混凝土参与耦合数组*enddo!开始耦合,耦合对象为钢筋中全部节点,以及混凝土中一部分专门用来耦合的 节点,二者一一对应,而且还位置确定。allsel,all/prep7*do,i,1,count1_nodecp,next,UX,slave_node(i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论