执行影射网格划分,这些方法包括:面的切割、线的合并等,这些方法也可以用在体的映射网格划分上。我今天要介绍的是另一种方法(可能在论坛上已经有类似的介绍,但我还没有看到,如果有,就算重温吧)也即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有个缺点就是运算时间较慢,但会随着计算机运算速度的提高而弱化这个缺点。
63、怎么改变面的发向方向
答:可以试试anorm,areverse,enorm 修改 Area 的法向:
Main Menu>Preprocessor>Modeling>Move / Modify>Areas>Area Normals 或直接修改单元的法向:
Main Menu>Preprocessor>Modeling>Move / Modify>Elements>Shell Normals
64、关于载荷步的一点体会
首先,更正以下载荷步的定义:我认为载荷步是根据荷载时间历程曲线划分段数,每一个 载荷步代表载荷发生一次突变或渐变的过程。当然载荷步可继续分成SUBSTEP。
其次,关于多步加载:多步加载载荷有两种方式即替换式、叠加式。一般选前者方便,比如地震载荷的输入。
关于替换式加载:在线性阶段,我们感觉荷载步之间是独立的,比如: /SOLU
F,1,FY,100 SOLVE F,1,FY,100 SOLVE finish
两次计算结果相同。这不假,应为后加载荷替换了前加载荷。若为: /SOLU
F,1,FY,100 SOLVE F,1,FY,200
SOLVE finish
计算结果最后显示第二次加载200的结果,好像第一步多余,其实不然。这其中隐含加载历史。所以说载荷步之间不是独立的,只是对线性体系没有影响罢了。
再次,对于非线性阶段,载荷步应和加载历史对应。不然计算结果将有很大的影响。即荷载步之间是有影响的。
最后,我想校正以下许多关于多载荷步计算结果提法。以前面例子为例,对于替换加载第二载荷步的计算结果并非是在第一载荷步计算结果上叠加,而是由第一载荷步到第二载荷步加载历史下的最终结果。若为多步加载,依次类推。
65、计算结果的评价:
当做完一次静力分析查看结果时,Plot显示的节点最大应力和List出来的节点最大应力有时不相同(和Plot显示的节点最大应力相比通常偏小),有时相同,请问这是什么原因?应该以那个节点应力结果为准?
答:这种情况一般出现在使用 Solid 单元时,显示节点应力时要注意一下 PowerGraph 选项是否打开,如果打开改选项 (默认),显示的是表面单元的平均值,比较偏大;如果关闭该选项,显示的是所有单元的平均值,会小一些,此时的结果与 List (所有单元的平均值) 的结果是一致的。应该说关闭 PowerGraph 的结果是比较准确的。
66、ansys后处理可否画自定义变量的云图
得到了接触面的应力和剪应力,需要得出两者相除后变量的云图,不知可否? 答:在element table里面可以对任何已知变量进行运算得出新的变量,并画出云图。
67、两种PowerGraphis结果显示模式对结果的影响
ANSYS中图形显示方式有两种:PowerGraphics和Full Graphics 。在用实体单元和壳单元时候,可能会产生不同的图形显示方式导致不同的结果,网上找点英文资料翻译整理如下: 增强图形(PowerGraphics)的优点: 1.显示速度快; 2.可显示二次曲面;
3.在不连续处(材料、几何、实常数等)不进行结果平均处理; 4.可以同时显示Shell单元的顶面和底面应力。
全图形(FullGraphics)的优点:
1.显示参数少,这意味着有在用户间有更好的可移植性; 2.显示结果总是和打印结果一致;
3.结果总是和得到的结果文件一致(没子网格数据插入)。
一般来讲,增强图形(PowerGraphics)会比全图形产生较大(或较保守)的值: 1.表面总会产生较大的应力,增强图形没有对表面以下的单元结果进行平均;
2.在不连续处不进行平均处理,会得到较为真实的图形显示(因为实际上在不连续处的应力和应变是存在差异的)。
对于承载能力计算来说,选择哪种图形显示模式,也可能要依据哪种结果被用来和试验数据进行对比。如果在连续区域,增强图形和全图形或者未平均的节点结果之间存在较大差异,这可能意味着此处的网格划分不够精细。得到的结果可能是错误的。
67、让ANSYS程序在命令执行到某一行的时候停止
答:/eof
68、怎么在计算结果实体云图中切面?
答:命令流
/cplane /type
图形界面操作 1.设置工作面为切面
2.PlotCtrls-->Style-->Hidden line Options 将[/TYPE]选项选为section
将[/CPLANE]选项选为working plane 然后OK就可以了。
69、log文件整理心得:
1.要注意时间,因为每次做的东西都会跟在log文件后面,所以要根据时间取舍,不是所有的log文件中的内容就有用的,一开始我建议从新建一个文件开始。 2.最好每做一步看一下log文件,可以知道自己的操作对应哪些命令 3.有些关于存盘、显示视角等命令可以删除。 4.选取实体时往往会产生很多命令,可以简化。
5.整理命令流时要新建立一个文本文件,以便从log文件中拷贝所需要的。