第2章 拓扑优化和自由尺寸优化
2.1 拓扑优化和自由尺寸优化简介
无论哪种优化类型,最主要的目标都是提高产品性能和降低生产成本。OptiStruct提供了拓扑、形貌、形状、尺寸(参数)、自由形状、自由尺寸6种优化类型,主要区别在于设计变量的不同,其余方面基本上是一致的。
要做好优化首先要了解常见的结构优化流程,但是优化没有固定的流程。在产品设计的不同阶段可能使用不同的优化技术,在一个零件上可能使用多种优化技术。图2-1所示为一个简单零件的优化流程,包括拓扑、形状、尺寸优化和CAD,实际项目中往往还有反复,比如最终方案出现局部应力集中时可能需要再次进行形状或自由形状优化,或者和设计部门沟通后直接根据经验加强局部设计。
图2-1 结构优化流程
2.1.1 拓扑优化简介
拓扑优化不仅用于零部件设计,也常用于系统级设计。对整体进行拓扑比对每个零件分别进行拓扑的效果更好,但随着零件数量的增加,连接关系变得复杂,优化的复杂度和难度也会随之增加。
拓扑优化通常位于优化的第一阶段,优化结果可以通过几何的方式返回CAD软件,由CAD软件重新进行几何细节设计后还需要进行一轮强度校核,对于局部出现问题的区域可以再次进行拓扑优化或者由后续的形状和尺寸优化进行解决。一份具有说服力的优化报告应该包括原始设计和优化设计的重量以及各个工况下的各项性能指标对比。图2-2和图2-3所示为一个支架模型的优化前后对比。
图2-2 优化前后的支架模型
图2-3 优化前后性能指标对比
拓扑优化的应用场景有很多,以下简单列举几种。
1)正向设计。优化技术在设计早期介入,这是其最有价值的使用场景,此时优化的潜力最大,通过优化可以直接得到材料布局从而指导零件设计。这种情况下需要先构造设计空间和非设计空间,给定载荷工况,然后设定体积百分比、位移、频率等设计约束后进行拓扑优化,优化完成后还需要进行几何重构,最后把几何文件提供给设计部门进行产品功能和细节设计。
2)零件外形无法更改。优化只能修改内部结构或部分结构,这是很多CAE工程师面临的问题。具体原因可能是工业设计部门已经锁定外观设计,结构部门的更改权限只是内部结构,或者是需要将旧设计方案进行更新后用于新产品,也可能是产品在测试或客户使用过程中出现了问题需要进行改进。图2-4所示为只优化内部结构的例子。
图2-4 局部优化(只优化内部结构)
3)重新设计零件,功能、要求、连接方式和原设计类似。
拓扑优化是在给定设计空间寻找最优形状和材料布局的数学算法。OptiStruct拓扑优化采用变密度法,人为地引入一种假想的密度可变的材料,假定材料物理参数(如许用应力、弹性模量)与材料密度间存在某种函数关系,优化时以每个单元的密度为拓扑设计变量,设计变量的个数与设计区域的单元个数相等。
建立一个材料弹性模量与单元相对密度之间的函数关系,通过引入惩罚因子对中间密度值进行惩罚,使中间密度值向0-1两端聚集,即连续变量的拓扑优化模型能很好地逼近0-1离散变量的优化模型,如图2-5所示。
图2-5 变密度法
惩罚函数是一个指数函数,图2-5中的p就是指数。对于2D和3D单元可以设置DOPT PRM,DISCRETE为p-1,对于1D单元可以设置DOPTRPM,DISCRETE1D为p-1。也可以设置TOPDISC为YES来提高离散程度,这是在最近版本新增的选项,效果更好。OptiStruct离散参数的设置见表2-1。
表2-1 OptiStruct离散参数的设置
为了得到更离散的结果,在优化过程的不同阶段优化引擎会自动调整p值,如图2-6所示。
图2-6p值自动调整曲线
2.1.2 自由尺寸优化简介
自由尺寸优化相对用得比较少,只支持2D单元,可以理解为变量极多的尺寸优化。每个变量的变化范围一般是从0到单元的初始厚度,用户也可以另外设定变化范围,如图2-7所示。自由尺寸优化的结果是一片连续变化的厚度,每个2D单元有一个单独的厚度结果。这种优化通常意味着较高的加工成本,所以主要应用在一些对重量和性能敏感但对制造成本不敏感的行业。另外,自由尺寸优化也常用于对2D拓扑优化结果进行快速验证。
图2-7 自由尺寸优化变量
2.1.3 实例:michell模型拓扑优化
michell模型拓扑优化是一个经典的优化问题,模型如图2-8所示。
图2-8 michell模型
操作视频
优化三要素
设计变量:圆形区域以外的单元。
设计约束:优化区域的体积百分比小于20%。约束区域圆形部分是非设计区域,而且施加了1、2方向的约束。
优化目标:最小化柔度。
操作步骤
Step 01 打开网格文件michell_start.hm。
Step 02 创建拓扑优化设计变量。进入Analysis>optimization>topology面板的create子面板,设置如图2-9所示。props选择design,单击create按钮完成创建。
图2-9 创建拓扑优化设计变量
Step 03 创建柔度响应。进入Analysis>optimization>responses面板,设置响应类型为com-pliance,单击create按钮创建柔度响应comp,如图2-10所示。
图2-10 创建柔度响应
Step 04 创建体积百分比响应。设置响应类型为volumefrac,单击create按钮创建体积百分比响应volfrac,如图2-11所示。
图2-11 创建体积百分比响应
Step 05 创建设计约束。进入Analysis>optimization>dconstraints面板,response选择volfrac,upper bound设置为0.2,单击create按钮完成创建,如图2-12所示。
图2-12 创建体积百分比约束
Step 06 创建优化目标。进入Analysis>optimization>objective面板,response选择comp,loadstep选择SUBCASE1,单击create按钮完成创建,如图2-13所示。
图2-13 设置优化目标
Step 07 提交优化计算。进入Analysis>OptiStruct面板,设置如图2-14所示,然后单击Opti-Struct按钮,打开HyperWorks Solver View对话框。在对话框中单击Results按钮打开后处理面板。
图2-14 提交优化计算
Step 08 结果后处理。单击HyperView工具栏上的contour按钮,然后单击Apply按钮显示云图,如图2-15所示。为了不显示密度很小的单元,可以打开右侧的Legend选项卡,如图2-16所示。
图2-15 contour面板
图2-16 Legend选项卡
优化关心的是最后一个迭代步的结果,如图2-17所示。单击工具栏上的播放按钮可以播放动画。单击HyperView工具栏上的Iso按钮,然后单击Apply按钮显示iso图,如图2-18所示。
图2-17 密度云图
图2-18 密度iso图(一)
从优化结果能够大致看出材料的分布方式。从云图可以明显地看出接近圆形区域的密度分布类似国际象棋棋盘,这种现象称为棋盘格效应,说明优化算法在这个区域遇到了麻烦,导致局部结构不清晰。解决的办法包括增加最小成员尺寸约束、网格细化、修改优化约束等,例如添加最小成员尺寸约束,设置Mindim为0.2或0.3,如图2-19所示。重新运行后的优化结果(后处理设置不变)如图2-20所示。
图2-19 设置最小成员尺寸约束
图2-20 优化后的密度云图
注意,优化结果中并没有图2-21所示中间部分的材料,这说明在工程问题中人们的直觉经常是靠不住的,尤其是在动力学和高度非线性领域。
图2-21 很多设计人员认为应该有材料的部位
接下来把这个问题略加调整,载荷变为左侧施加一对力偶,两个工况单独作用,如图2-22所示。
优化三要素如下。
优化目标:最小化体积。
设计约束:右侧工况下,加载点位移小于2.5;左侧工况下,加载点位移小于1.5。
设计变量:圆形区域以外的所有单元。
优化结果如图2-23所示。
图2-22 优化模型
图2-23 密度iso图(二)
可以看出右侧的结果变化不大,但是左边的结果却很不相同(因为载荷不同)。要让设计工程师想出这个匪夷所思的设计是相当有难度的,何况这已经是极简的设计空间在极简载荷工况下的结果。所以,几乎在所有的场合设计师都应该自问一下:这个结构可以OptiStruct吗?
实际上,这两个载荷工况的作用位置可能互换。这是非常常见的,就像左侧机翼上的载荷也有可能在右侧机翼出现,所以两个机翼的设计应该是对称的。优化时也可以施加左右对称约束,然后重新进行优化,结果如图2-24所示。
图2-24 密度iso图(三)
从结果可以看出,左侧的载荷主导了结果。原因何在?看一下两个柔度值大小就明白了——相差近1000倍。
加权柔度的加权系数如何选取是实际工程中经常需要考虑的问题,如果原始柔度比较接近,可以先使用1 ∶ 1这样的配置,如果比较悬殊则考虑原始柔度与加权系数的乘积接近1 ∶ 1。Opti-Struct也提供了自动配平的功能,方法是使用compliance index类型的响应,自动配平的选项如图2-25所示。更常见的情况是需要尝试不同的设置方案,包括对每一个工况进行单独优化,这样才能通过优化结果的变化更好地理解结构。
图2-25 创建compliance index响应
实际工程中还会面临很多其他的考虑,例如某些位置是必须开孔的(如有一根轴或管要通过),如图2-26所示。对称约束升级为上下对称+左右对称。优化结果如图2-27所示。
以上是二维情况下设计空间变化对优化结果的影响。如果零件是从一块大型厚钢板切出来的,情况大概就是这样的。但是因为材料利用率不高,这种情况实际工程中比较少。更常见的情况是使用加强筋在平板上进行加强,因为这样材料利用率高很多。接下来就来做这样的优化。简单起见,这里把两个载荷一起作用,设置优化基准厚度为1(这部分不参与优化),如图2-28所示。
图2-26 带孔的设计空间
图2-27 密度iso图(四)
图2-28 设置基准厚度
优化三要素调整如下。
优化目标:最小化体积。
设计约束:右侧工况下,加载点位移≤0.08;左侧工况下,加载点位移≤0.1。
设计变量:圆形以外的单元。
优化结果如图2-29所示,材料都到了上下两侧。换句话说只需要在图示位置焊接4mm厚度的加强筋即可。如果是铸造件,使用实体单元进行优化效果更佳。3D优化结果如图2-30所示。
图2-29 密度iso图(五)
图2-30 密度iso图(六)
这块板也可以用形貌、尺寸、自由尺寸、形状、自由形状优化,具体取决于应用场景、制造水平、成本限制等,这里不再展开讨论。
2.1.4 实例:方板的自由尺寸优化
本例的模型是一块简单的方板。模型如图2-31所示,左端施加了1~6方向的约束,右端中心施加z向1000N的集中力。
图2-31 自由尺寸优化模型
优化三要素
优化目标:最小化柔度。
设计约束:优化区域的体积百分比≤30%。
设计变量:所有单元。
操作视频
操作步骤
Step 01 打开freesize_start.hm。
Step 02 创建拓扑优化设计变量。进入Analysis>optimization>freesize面板的create子面板,设置如图2-32所示。props选择pshell,单击create按钮完成创建。
图2-32 创建拓扑优化设计变量
Step 03 创建柔度响应。进入Analysis>optimization>responses面板,设置响应类型为com-pliance,单击create按钮创建柔度响应comp,如图2-33所示。
图2-33 创建柔度响应
Step 04 创建体积百分比响应。设置响应类型为volumefrac,单击create按钮创建体积百分比响应volfrac,如图2-34所示。
图2-34 创建体积百分比响应
Step 05 创建设计约束。进入Analysis>optimization>dconstraints面板,response选择volfrac,upper bound设置为0.3,单击create按钮创建体积百分比约束,如图2-35所示。
图2-35 创建体积百分比约束
Step 06 创建优化目标。进入Analysis>optimization>objective面板,response选择comp,loadstep选择SUBCASE1,如图2-36所示。
图2-36 创建优化目标
Step 07 提交优化计算。进入Analysis>OptiStruct面板,设置如图2-37所示,单击OptiStruct按钮打开HyperWorks Solver View对话框。在对话框中单击Results按钮打开后处理面板。
图2-37 提交优化计算
Step 08 结果后处理。单击HyperView工具栏上的contour按钮,打开contour面板,如图2-38所示,然后单击Apply按钮显示图2-39所示的云图。
图2-38 contour面板
还可以添加其他制造约束,比如施加一个线性排列的约束。将自由尺寸设计变量更改为图2-40所示的设置。优化结果变成了线性排列的厚度,如图2-41所示。自由尺寸优化的制造约束和拓扑优化类似,具体可以查询DSIZE卡片的帮助说明。
图2-39 密度云图(一)
图2-40 自由尺寸设计的线性约束
图2-41 密度云图(二)
2.1.5 网格收敛性研究
拓扑优化模型的网格大小可能显著影响优化结果,原因是优化结果中每个单元只有一个密度结果,如果网格过于稀疏,优化结果就会难以解读出结构的细节。下面使用一个2D框架拓扑优化案例来展示网格大小对优化结果的影响。
本例的工况是静力分析,左侧上下两点全约束,右侧上下两点各施加100N的集中力,如图2-42所示。
图2-42 优化模型
优化三要素如下。
优化目标:最小化质量。
设计约束:右上角51号节点位移小于1.5mm。
设计变量:除两侧以外的所有横向结构。
局部初始网格如图2-43所示。优化结果如图2-44所示。
图2-43 局部初始网格
图2-44 密度iso图(七)
将网格细化后如图2-45所示。优化结果如图2-46所示。
图2-45 网格细化后
图2-46 密度iso图(八)
从优化结果可以看出,随着网格的细化,优化结果逐渐变得清晰。一般来说,随着网格的逐步细化,局部细节会越来越清晰,细化到一定程度后优化结果趋于稳定,这时就可以停止继续细化网格了。对于大型模型,通常无法将模型细化到足够细的程度,只要优化结果清晰、连续就可以了。
这个过程一般称为网格收敛性研究。优化结果对网格大小的敏感性取决于工况、几何形状及优化设置,并没有一般性的规律。
进行有限元分析时由于最大应力总是在结构的表面出现,所以有限元前处理通常会生成从外表面到内部逐渐加粗的网格。如果优化的网格是四面体单元,因为无法预测优化结果中的材料会出现在哪里,所以应该使用内外一致的网格大小。HyperMesh中控制网格尺寸增长率的参数是图2-47中的Growth rate。
图2-47 四面体网格尺寸增长率控制参数