3.5.2.1 边交换
拓扑优化方法的思想通过改变网格的拓扑结构来提高网格质量。二维时,最常用的是边交换算法。类似于Delaunay三角剖分中涉及的最小角最大化特性,应尽量使三角网格中每个三角形单元避免出现狭长的角。二维三角形网格中,针对共用一条边的一对三角形组成的凸四边形,通过改变上述三角形对的共用边(即凸四边形的对角线)进行局部重构从而提高三角形对的质量。
图3.27 边交换方法
如图3.27所示,两个相邻三角形所形成的四边形的4个顶点分别为A、B、C和D,并且,∠ACB=α1,∠ADB=α2,A、B、C三点确定一个圆,D相对于此圆有3种情形,相应地,凸四边形的对角线也有3种选择:
(1)当点D位于圆上,即α1+α2=π时,理论上可以任意选择对角线,但为了获得最好的三角形形态,分别计算交换对角线之前的原三角形对的最小内角,再计算交换对角线之后形成的新三角形对的最小内角,比较两个情况下最小内角的大小,若交换对角线之前的最小内角大,则不用交换对角线,反之,交换对角线。
(2)当点D位于圆内,即α1+α2>π时,交换对角线,删除三角形对ΔABC、ΔADB共用边AB,连接CD,组成新的三角形对ΔADC、ΔBCD。
(3)当点D位于圆外,即α1+α2<π时,不需要交换对角线。
上述做法与Delaunay三角剖分方法中的Lawson算法的LOP方法基本相同,该方法需要计算三角形的外接圆和判断点是否落在圆内,下面给出一种直接根据三角形对的4个顶点坐标判断是否需要交换对角线的方法。
设A、B、C和D四个点的坐标分别为(x1,y1)、(x2,y2)、(x3,y3)和(x4,y4),由余弦定理可得:
sin(α1+α2)=((x1-x3)×(y2-y3)-(x2-x3)×(y1-y3))+((x2-x4)×(x1-x4)+(y2-y4)×(y1-y4))+((x1-x3)×(x2-x3)-(y1-y3)×(y2-y3))×((x2-x4)×(y1-y4)-(x1-x4)×(y2-y4))
因此可以根据sin(α1+α2)的符号决定是否交换对角线:
(1)当sin(α1+α2)=0时,可任意选择对角线。
(2)当sin(α1+α2)<0时,需要交换对角线。
(3)当sin(α1+α2)>0时,不需要交换对角线。
实际应用时,不需要采用边交换方法使每个三角形都满足空外接圆特性,而只要针对某些明显需要边交换的三角形对,如两个三角形的最大角都为钝角且两个最大角对应的边为该三角形对的共用边,如图3.28所示,存在大量这样的三角形,此时,对上述三角形进行边交换将显著提高网格质量,同时为了避免交换后质量降低,判断交换前后三角形对的6个内角的最小角度的大小:若交换前三角形对的6个内角中的最小角小于交换后新的三角形对的最小内角,则交换对角线,反之,不交换。
图3.28 边交换方法优化三角形网格实例
在VC++环境下,上述算法的完整代码如下,其中函数EdgeSwap(CSurf*surf)为边交换主函数,进行边交换 *** 作该函数调用的MaxAngleInTrgl()和MinAngleInTrgl()的作用是分别计算一个三角形内最大角和最小角。
三维地质建模方法及程序实现
三维地质建模方法及程序实现
三维地质建模方法及程序实现
三维地质建模方法及程序实现
3.5.2.2 插入/删除点
网格单元中,往往要衡量单元某一边与边中点处期望长度的比例,二维中这个比例的理想值是1.53,如果这个比例太大就要将边分解,插入点可以用来改变这个比例,并且通过仔细选择点插入的位置可以控制单元的几何形状,达到单元优化的效果。网格加密方法中的二分法实质上也是一种通过插入某些边的中点的拓扑优化方法。
二分法是将边的中点作为加密点的一种递归算法。具体方法为:先将三角形网格中长度大于设定阈值的边的中点作为新结点,之后按照图3.29所列3种情况重新划分三角形并更新相应的三角形及边的邻接关系,并将新三角形投入下一循环进行边长判断,直到所有边长均小于或等于相应的阈值为止。
图3.29 二分法加密结点与单元重划分
删除点的 *** 作主要是作为一种重定义技术。许多实例当中,通过删除一个区域的网格完成删除点的 *** 作,然后重新选择长度比例对这个空腔进行网格重新生成。点删除技术的不同应用也可以用来改善单元的几何形状达到网格优化的目的。最常见的做法是当两点距离小于某一个阈值时,删除这两点,并加入这两点的中点,且更新通过上述两点的网格单元的拓扑。
这个问题你提出也有几天了,尚未收到回答。不知道你有没有自己网站搜一下?网上还是有些这样类似的文章的。如下,是我网上找到的,仅供你参考:
1.1、定义需要求解的结构问题
对于结构进行优化分析,定义结构的物理特性必不可少,例如,需要定义结构的杨氏模量、泊松比(其值在0.1~0.4之间)、密度等相关的结构特性方面的信息,以供结构计算能够正常执行下去。
1.2、选择合理的优化单元类型
在ANSYS中,不是所有的单元类型都可以执行优化的,必须满足如下的规定:
(1)2D平面单元:PLANE82单元和PLANE183单元; ??
(2)3D实体单元:SOLID92单元和SOLID95单元;
(3)壳单元:SHELL93单元。
上述单元的特性在帮助文件中有详细的说明,同时对于2D单元,应使用平面应力或者轴对称的单元选项。
1.3、指定优化和非优化的区域
在ANSYS中规定,单元类型编号为1的单元,才执行优化计算;否则,就不执行优化计算。例如,对于结构分析中,对于不能去除的部分区域将单元类型编号设定为≥2,就可以不执行优化计算,请见下面的代码片段:
……
……
Et,1,solid92
Et,2,solid92
……
Type,1
Vsel,s,num,,1,2
Vmesh,all
……
Type,2
Vsel,s,num,,3
Vmesh,all
……
……
说明:上述代码片段定义相同的单元类型(solid92),但编号分别为1和2,并将单元类型编号1利用网格划分分配给了1#体和2#体,从而对其进行优化计算;而单元编号为2利用网格划分分配给了3#体,从而不执行优化计算。
目标函数和约束条件
ANSYS程序提供一个专门用于预定义总体积的拓扑函数,即VOLUME,它既可用于目标函数,也可以用于约束条件。另外,目标函数和约束条件必须按照以下所示进行配对定义才有效。
注:
1、ANSYS程序只对单元类型编号等于1的单元部分进行拓扑优化,对于单元类型编号等于或大于2的单元网格不进行拓扑优化。
2、
(1)拓扑优化只能基于线性结构静力分析或模态分析,其它分析类型暂时还不支持。(2)ANSYS实际提供的拓扑优化为基于线性结构静力分析的最大静态刚
度拓扑优化设计和基于模态分析的最大动态刚度优化设计,同时需要达到体积最小化目的。(3)采用单载荷步或多载荷步的线性结构静力分析时,施加相应的载荷
和边界条件。采用模态频率分析,仅仅施加边界条件。
3、拓扑优化的结果对网格划分密度非常敏感,较细密的网格可以产生更加清晰、确定的拓扑
结果,但计算会随着单元规模的增加而需要更多的收敛时间;相反,较粗的网格会生成模糊、不确定的拓扑结果。另外,拓扑优化结果对载荷情况十分敏感,有时很
小的载荷变化将导致拓扑优化结果的巨大差异。
1.4、定义载荷步或者需要提取的频率
1.4.1 线性结构静态分析
对
于结构优化而言,其总是在特定的载荷(或者载荷步),约束和目标下进行的,在优化分析的过程中,必须执行线性结构静态分析,才能获得需要的优化之后的形
状。在ANSYS中,可以对单步载荷或者多步载荷执行优化分析,当然,单步载荷是最简单的了。然而,对于某个特定载荷步,必须使用LSWRITE载荷步存
储命令将载荷步预存起来,再用LSSOLVE命令进行求解。
先看看下面的代码片段:
……
……
D,10,all,0,,20,1
Nsel,s,loc,y,0
Sf,
Allsel
Lswrite,1
Ddel,
Sfdel,
Nsel,s,loc,x,0,1
D,all,all,0
F,212,fx,
Lswrite,2
……
……
Lswrite,3
……
……
Finish
……
Tocomp,mcomp,multiple,3
Tovar,mcomp,obj
Tovar,volume,con,,10
Todef
Toloop,20
……
……
说
明:该代码片段首先定义了3个载荷步,并利用LSWRITE命令将载荷步预存;之后利用Tocomp命令定义优化任务目标名称mcomp,并将体积减少
10%作为优化的约束条件,之后用Todef初始化优化过程,最后利用Toloop命令执行优化计算,最大计算次数20次。
内容比较多,我无法全部粘贴过来,如果你觉得有用,可以前往 http://wenku.baidu.com/link?url=McAL72vjf8z7IDvahHWQ0IHLzrNJ_AVmqG0m2WHjqgPP1sQekREO-CEzIYeeIxkWSj9ChSMK2rJ3fR3Hw1n18jrRFMqmEesnf-B6Xz_3v_W
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)