如何利用ANSYS进行拓扑优化
就目前而言,利用有限元进行优化主要分成两个阶段:
(1)进行拓扑优化,明确零件最佳的外形、刚度、体积,或者合理的固有频率,主要目的是确定优化的方向;
(2)进行尺寸优化,主要目的是确定优化后的的零件具体尺寸值,通常是在完成拓扑优化之后,再执行尺寸优化。
在ANSYS中,利用拓扑优化,可以完成以下两个目的:
(1)在特定载荷和约束的条件下,确定零件的最佳外形,或者最小的体积(或者质量);
(2)利用拓扑优化,使零件达到需要的固有频率,避免在使用过程中产生共振等不利影响。 1.ANSYS进行拓扑优化的进行拓扑优化的过程
在ANSYS中,执行优化,通常分为以下6个步骤:
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#体,从而不执行优化计算。
1.4 定义载荷步或者需要提取的频率
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次。
相关命令:TOCOMP、TOVAR、TODEF、TOEXE、TOLOOP和简要说明。
(1)TOCOMP:定义结构优化任务目标。(如何理解COMPLIANCE:Compliance本意是一致性,统一性,在结构优化分析中,特别是对于多个载荷步,需要在多个载荷步之间取得一致性的结果,才能满足结构优化分析的目标)
(2)TOVAR:定义优化变量,可以是目标变量,也可以是约束变量等;
(3)TODEF:定义优化的初始化条件或者收敛准则;
(4)TOEXE:执行单次优化计算;
(5)TOLOOP:批量执行多次优化分析计算。
说说TOEXE和TOLOOP之间的区别:TOEXE执行单次优化分析计算,其本身不执行结构分析过程,因此,在利用TOEXE命令执行优化计算之前,需要利用SOLVE或者LSSOLVE命令先执行结构静态分析计算;而TOLOOP是一个执行优化计算的宏命令,其中包含了SOLVE和LSSOLVE等命令,因此在上述代码片段中没有出现SOLVE或者LSSOLVE命令。就使用的便利性而言,利用TOLOOP命令可能更方便,但是利用TOEXE命令用户可以创建自己的优化宏命令,各有所长,主要是看用户如何使用这两个命令了。
.4.2 模态优化分析
在执行模态优化分析之前,需要使用TOFREQ和TOVAR定义模态分析任务名称和优化分析变量,这点和上述的结构优化分析过程类似。值得注意的是,在利用MXPAND指定模态频率分析计算中,需要将单元计算设定为“YES”,这样才能利用TOEXE命令正常执行优化计算过程,当然在MXPAND之前还要使用modopt命令设定模态计算的选项;而利用TOLOOP命令执行模态优化分析计算过程中,由于TOLOOP是编制好的宏命令,不需要使用MXPAND等命令,请见下面的代码片段:
/solution
Antype,modal
Finish
Tofreq,mfreq,reciprocal,3
Tovar,mfreq,obj
Tovar,volume,con,,50
Todef,1.0d-4
Toloop,20
说明:首先定义模态求解作为分析类型,之后利用tofreq设定频率优化作为优化任务,名称为mfreq(其中reciprocal表示多阶模态频率,本例中为前3阶模态),并利用命令tovar设定了体积减少50%作为优化的约束条件,之后设定优化的收敛准则,最后利用toloop命令执行最多20次优化迭代计算。在本例中,因为toloop是一个宏命令,所以并没有显式的使用modopt和mxpand命令,如果使用toexe命令,则用户必须显式的使用modopt和mxpand命令。
1.5对优化过程进行定义和控制
在ANSYS中执行优化过程有2种方式:
(1)采用solve和toexe 命令相结合的机制,一步一步的执行优化计算,直到满足用户的优化目标和约束条件为止。
(2)采用toloop宏命令执行优化计算,可执行多次优化分析计算。说明:采用第二种方式操作更简单,推荐采用。
总体上来说,执行优化计算过程大致上分为4个步骤:
(1)定义优化函数(或者方式和任务);
(2)定义优化目标或者约束条件;
(3)初始化优化过程;
(4)执行优化计算(可以是单次计算,也可以自动批量计算)。
以下分别进行描述:
.5.1定义优化函数
在ANSYS中,主要采用以下两种方式定义优化函数:
(1)利用TOCOMP定义结构优化;
(2)利用TOFREQ定义频率优化。
说明:可以利用TOLIST命令例举出所有定义了的优化函数。
.5.2定义优化目标或者约束条件
定义优化目标或者约束条件主要是利用TOVAR命令设定,看看下面的代码片段:
Tocomp,comp,single,1
Tovar,comp,obj
Tovar,Volume,con,,25
Todef,1.0d-4
Toloop,10,1
说明:首先利用tocomp命令定义了一个单步(single)的结果优化分析任务,并将任务名称(comp)作为优化任务,并设定体积减少25%作为优化约束条件,之后初始化优化过程,并利用toloop命令批量执行优化计算,当然,可以使用tostat命令查询tovar、todef和totype命令的设定状态(totype命令设定优化类型,具体说明可以参见帮助文件)。同样,也可以利用如下的命令格式删除已经定义好的优化任务名称或者约束条件:
Tovar,Reference_Name,DEL
可以定义的优化目标和约束条件的组合方式见下表:
序号 优化类型 优化目标 约束条件
1 结构优化(TOCOMP) 单步优化(single) 体积 (VOLUME)
2 多步优化 Multiple) 体积(VOLUME)
3 频率优化(TOFREQ) 单阶频率优化(Single) 体积(VOLUME)
4 加权平均频率优化(Weighted Mean) 体积(VOLUME)
5 一致平均频率优化(Reciprocal Mean) 体积(VOLUME)
6 欧几里德范数频率优化(Euclidean norm) 体积(VOLUME)
7 体积(VOLUME) 单步结构载荷
8 体积(VOLUME) 多部结构载荷