[转载]Ansys映射网格划分
2012-02-26 11:52阅读:
【转】Ansys映射网格划分
一、映射网格划分方法
映射网格划分一直是大家关心的问题,现把自己使用ansys的一些经验及编程的真实体会奉献给大家,希望能达到授之以渔的效果。
ansys执行映射网格划分的条件是:对于面,必须是三角形或四边形,对于体,必须是四面体、五面体或六面体,这是众所周知的,但往往忽略了另一个条件:划分数的匹配问题,对于四边形而言必须满足对边划分数相等的条件,对于三角形,在后面作专门介绍。其实ansys不仅可以对三角形和四边形执行映射网格划分,对任意多边形原则上(划分数匹配)都可以执行影射网格划分,这些方法包括:面的切割、线的合并等,这些方法也可以用在体的映射网格划分上。我今天要介绍的是另一种方法(可能在论坛上已经有类似的介绍,但我还没有看到,如果有,就算重温吧)也即amap命令(基于面的角点的映射网格划分)的使用,它需要指定要划分的面的编号,以及以任意顺序指定该面上的任意4个角点(注意:任意四个角点是有前提的,即划分数的匹配,为了不再罗嗦,以后不在重复强调这个问题)。看一个简单的例子(如图1,尺寸见坐标),这个图形由3个面组成其中A2和A3满足映射网格划分的条件,A1看起来是个矩形但其实由5条边组成,要实现A1的影射网格划分,你可以用工作平面将其沿着L6切开,但这样就会多出一条线,某些情况是不希望有多余元素生成的,比如把图1看成是一块楼板,线就是梁,如果切割后就多出了一条线,对以后定义梁造成不便。这个问题不能用lcomb命令将线2和线4合并(自己可以试一下),另一个方法就是用amap,1,4,7,8,6。理论上amap命令可以用于任何多边形,但往往理论是实际是有差距的,还是刚才那个例子,如果你将线的划分尺寸定义为1(lesize,all,1),则线10的划分数为1,线2和线4各为1,然后你再用同样的命令amap,1,4,7,8,6,看看有什么结果——划分数不匹配,不能进行映射网格划分。相关命令流如下:
/PREP7
k
k,,1
kgen,3,1,2,
1,,1
a,1,2,4,3
a,3,4,6,5
et,1,42
wprota,,,90
wpoffs,,,0.5
asbw,1,,dele
amap,2,3,4,5,6
aclear,all
lesize,all,1
amap,2,3,4,5,6
以上命令流所建模型的编号跟图1有些不同。从这个简单的例子大家应该能够体会到划分数匹配的重要性了,实际工程中的图形远比这个复杂得多,要想完全满足划分数匹配的条件是很不容易的,甚至可以说几乎不可能,除非全部分割成4边或3边形,但这样会产生很多小面影响网格划分的质量,这在建筑结构中是很常见的,我做过几个实际工程,深有体会。因此amap命令的使用也有局限性,在实际工程中可以综合使用多种方法以达到最优化。
二、映射网格划分如何用程序实现
下面仅介绍平面四边形(直边)映射网格划分实现的详细过程,其他仅给出思路。
首先将某对边线按划分数N,比例因子R离散为N+1个点,如图2。如果第1个点的x坐标为X1,第N+1个点的x坐标为XN+1,则第i个点的X坐标为:
Xi=X1+(XN+1-X1)*(R^(i-1)-1)/(R^N-1)
(R≠1)
Xi=X1+(XN+1-X1)*(i-1)/N
(R=1)
Y、Z坐标以此类推,这是递增和递减的情况,由中心向外递增和递减的情况可以自己推导。
离散后的情况如图3,并连接各离散点,得到N+1条线,然后根据这N+1条线的划分数M及比例因子S在这个方向进行离散,结果如图4。在离散的过程中顺便给节点编上号并赋其坐标值,节点编号的原则一般为从左到右,从下往上递增(编号方式与ansys不同)。然后给单元编号赋值(节点、材料等),也是按从左到右,从下往上编号递增。如第5个单元的节点编号为7,8,11,10(一般按顺时针或逆时针的顺序赋节点编号),单元的节点编号是有规律的可以通过程序实现。这样就完成了一个面的四节点映射网格划分,然后再按同样的步骤划第2、3……个面,不过要进行节点重合的检查。
对于三角形单元,可以先划分成四边形单元,然后按单元数循环,将每个四边形单元划分成两个三角形单元。举例如下:
For i=1:1:en
Nn=elem.node{i};
Elem.nodetri{2*i-1}=[Nn(1) Nn(2) Nn(3)];
Elem.nodetri{2*i}=[Nn(3) Nn(4) Nn(1)];
End
以上是MATLAB语言,进行以上操作以后就可以得到2en个三角形单元,单元的节点编号存放在Elem.nodetri中。
对于8节点等二次单元可以在四节点单元的基础上,在各单元边中分别产生一个节点,节点坐标即两个节点坐标的平均值。
如果组成平面的边有圆弧则按柱坐标离散,然后再转换成直角坐标,但要考虑圆弧所在象限的问题。如果是其他曲线则须给出曲线方程……
如果是三角形,可以先将其分割成3个四边形,然后按上诉方法离散。分割的方式与划分数的设置有关(如图5)。从图5可以看出三角形映射网格划分需要满足的划分数匹配条件:
(1)、有两条边的划分数相等;
(2)、第三条边的划分数必须为偶数;
(3)、第三条边的划分数必须小于另外两条边的划分数的2倍-2。
在ansys里还有其他条件,比如图6的划分数在ansys里是不能进行映射网格划分的,但实际上它是可以的。
对于曲面的情况,其做法是先做等参变换将其变换为平面,然后对变换后的平面划分网格,在变回原坐标系。体的情况类似,只是多了一次离散。
三、用MATLAB做有限元软件开发
MATLAB是目前主流的数值计算软件,有强大的矩阵运算、数值积分微分、解线性方程组的能力,这些正是有限元所必须的,因此用MATLAB做有限元软件开发可以充分利用其资源,节省开发时间,但MATLAB有个缺点就是运算时间较慢,但会随着计算机运算速度的提高而弱化这个缺点。
下面展示一些用MATLAB编的有限元程序的计算图形,这些只是其功能的冰山一角。
![[转载]Ansys映射网格划分](http://attach.baisi.net/attachments/forumid_95/0tTN+Ljxu6631g==_6uv7BEZwOtUQ.jpg)