第二章 拓扑优化技术实例
第四节 实例:C形夹结构的概念设计
在本实例中,通过分别对模型实施最小成员尺寸约束方法和不实施最小成员尺寸约束方法进行拓扑优化,创建新的拓扑结构,并移除多余的材料。熟悉拓扑优化的基本设计流程,并通过对比了解最小成员尺寸约束方法的作用,最终得到的结构更轻,并满足所有约束的设计。
优化问题描述如下。
- 目标:体积分数最小化。
- 约束:节点A在y方向的位移小于0.07mm,节点B在y方向的位移小于0.07mm。
-
设计变量:设计空间里每个单元的密度。
本实例主要包含以下内容:
- 在Hypermesh中建立模型。
- 模型静力分析。
- 设置优化。
- 查看优化结果。
step1 启动Hypermesh并设置用户配置文件
(1)在“开始”菜单中启动Hypermesh。默认情况下,User Profiles对话框将弹出。
(2)选中User Profiles上Optistuct左侧的按钮。
(3)单击OK按钮。
这样就加载了RADIOSS/Bulk和Optistruct所对应的Hypermesh设置。
step2 打开cclip.hm文件
(1)单击 按钮,选择cclip.hm。
(2)单击打开。
这样将载入cclip.hm到Hypermesh中,并取代了现有的文件。该文件中只包涵几何信息和网格信息。
step3 创建材料和属性并赋给组件
(1)因为组件需要材料,所以必须先创建一个材料组件。
(2)单击Model按钮。
在模型浏览窗口内上单击鼠标右键,移动光标至Create,激活其二级菜单并单击Material,如图2-17所示。在Name栏中输入Steel,在 Card image栏中选择MAT1。

图2-17 材料创建窗口
(3)勾选Card edit material upon creation复选框,单击Create按钮。
(4)弹出MAT1界面,设置E为2.0E5,Nu为 0.3,RHO为7.9E-09。单击设置项,如[E],即可激活该选项,并输入值,如图2-18所示。

图2-18 材料卡片信息
(5)单击return按钮。
在模型浏览窗口内上单击鼠标右键,移动光标至Create,激活其二级菜单并单击Property。
(6)在Name栏中输入prop_shell。
(7)在Card image栏中选择PSHELL。
(8)单击material 选项卡,并选择Steel,如图2-19所示。

图2-19 属性创建窗口
(9)单击Create按钮。弹出PSHELL卡片设置界面。创建了一个新属性,并将叫Steel的材料与该属性关联。MID1对应着材料ID为2,即Steel的ID。
(10)弹出PSHELL界面,激活T,保持默认值为1.0。
(11)单击return按钮。
(12)单击Components图标 ,为组件更新新创建的属性。
(13)选择update子面板,单击 ,进入已有组件选择界面单击左键选择comp_shell,然后单击select,选中组件comp_shell。
注:左键是选中,右键是反选。
(14)单击 ,切换 选中 。
最终结果,如图2-20所示。

图2-20 属性更新面板
(15)单击update按钮。
(16)单击return按钮。
step4 创建载荷集合器
下面创建两个载荷工况(约束和集中载荷),并分别赋给不同的颜色。
(1)在模型浏览窗口内上单击鼠标右键,移动光标至Create,激活其二级菜单并单击选择LoadCollector。
(2)在Name栏中输入Constraints。
(3)保持Card image为none。
(4)在面板中为该载荷选择一种颜色。
(5)单击Create按钮。
(6)重复步骤(1)~(5)步,创建名为Forces的载荷工况。
step5 创建约束边界条件
对于在图2-21中显示的3个约束的节点,我们需要按照下列步骤创建SPC类约束,并把它们赋到已创建的Constraints载荷工况里。

图2-21 约束创建
(1)在模型浏览窗口中,展开LoadCollector,在Constraints上单击鼠标右键,选择Make Current。
(2)从Analysis页,进入constraints面板,按照图中3个节点的约束情况对模型进行操作。
(3)单击return按钮。
step6 施加力边界条件
在C形夹开口的两端分别施加两个相反的力,大小为100N。
(1)在模型浏览窗口中,展开LoadCollector,在Forces上单击鼠标右键,选择Make Current。
(2)从Analysis页,进入forces面板,如图2-22所示。

图2-22 载荷创建
(3)在节点A处创建一个集中力,在magnitude栏中输入100,切换方向选择器到y-axis。
(4)单击create按钮。
(5)类似地,在节点B处创建一个集中力,在magnitude栏中输入-100,确认方向选择器处于y-axis。
(6)单击create按钮。
(7)为了分清代表两个集中力的箭头,在uniform size栏中输入7,并按回车键。
注:uniform size用于显示尺寸大小的调节。
step7 创建载荷工况
创建载荷步是创建边界条件的最后一步。
(1)从Analysis页,进入loadsteps面板。
(2)在name栏中输入opposing forces。
(3)设置载荷步类型为linear static。
(4)勾选SPC,单击右侧 ,选择已创建的约束Constraints。
(5)勾选Load,单击右侧 ,选择已创建的载荷Forces。
(6)单击create按钮。
(7)单击return按钮,返回Analysis页。
step8 执行计算
在定义优化过程之前,对C形夹执行线性静力分析。通过该分析,可以帮助识别该结构的响应情况,并确保为优化定义的约束是合理的。
(1)从Analysis页,进入RADIOSS面板。
(2)单击save as按钮。
(3)选择结果文件放置的文件夹,并输入自定义文件名,本实例记为cclip.fem。
(4)单击Save按钮。
(5)设置export option、run option、memory options,如图2-23所示。

图2-23 任务递交面板
(6)单击Radioss按钮。
分析结束后,如果ANALYSIS COMPLETED显示在命令窗口则表示计算成功。
step9 分析结果后处理
(1)在Radioss面板下,单击HyperView。
(2)HyperView加载文件cclip.mvw,包括模型和结果文件。
(3)单击 ,进入云图。
(4)按照下图设定,查看y轴方向上的位移,单击Apply,如图2-24和图2-25所示。

图2-24 结果类型设置

图2-25 分析结果云图
(5)从File下拉菜单中,选择Exit命令退出HyperView。
step10 定义拓扑优化的设计变量
前面已经定义了包含壳单元、单元属性、材料属性、载荷和边界条件的有限元模型。现在需要对模型进行拓扑优化,优化的目标是减少使用的材料。但是,减小材料后可能会导致模型刚度的降低以及变形加剧。因此,在优化过程中需要确定位移的约束,这样就可以在使用的材料和模型的总体刚度上达到一定的平衡。
在结构上的外力作用点是夹子开口部分的节点,这两个节点处会较大的位移,需要对这两个节点的位移进行约束,使其在y轴方向上的位移不超过0.07。
(1)从Analysis页,进入optimization面板。
(2)选择topology。
(3)选择Create子面板。
(4)在desvar栏中输入d_shell。
(5)单击 ,进入已有组件选择界面,勾选prop_shell,单击select。
(6)切换type到PSHELL。
(7)确认base thickness= 0.0,如图2-26所示。

图2-26 变量创建面板
注:0值表明在特定单元的厚度值可以为0,即该处可以有洞产生。
(8)单击create按钮。
(9)在desvar栏中输入d_shell_1。
该设计变量利用最小成员尺寸控制方法。
(10)单击 ,进入已有组件选择界面,勾选prop_shell,单击select。
(11)切换type到PSHELL。
(12)确认base thickness= 0.0,单击create按钮。
(13)选择Parameters子面板。
(14)单击desvar,选择已创建的d_shell_1。
(15)按〈F4〉键进入distance面板,选中two nodes子面板,单击N1激活该项,选择任意节点,然后N2自动激活,选择同一单元中的另一节点。对不同单元重复几次以上操作,获得单元平均尺寸,该模型的单元尺寸大约为2.5。
(16)切换到mindim,输入5。
(17)MINDIM一般推荐值为单元平均尺寸的3倍。如果模型网格比较整齐,就像该模型中的网格,MINDIM可以是单元平均尺寸的2倍,即5。
(18)单击update按钮。
(19)单击return按钮,回到optimization面板。
step11 创建体积分数响应
(1)从Analysis页,进入optimization面板,然后进入其下的response面板。
(2)在response栏中输入volfrac。
(3)从response type的下拉菜单中选择volumefrac,如图2-27所示。

图2-27 响应创建
(4)单击create按钮。
step12 创建位移响应
创建位移响应的时候,尽量为响应设定一个有意义的名字,把响应类型设定为静态位移,选择与该响应对应的节点及节点位移方向。
(1)从Analysis页,进入optimization面板,然后进入其下的response面板。
(2)在response栏中输入upperdis。
(3)从response type下拉菜单中选择static displacement。
(4)单击节点A,并设定位移方向为dof2。
注:dof1、dof2、dof3,分别代表x、y、z方向的线位移。
(5)total disp代表各方向线位移矢量。
(6)dof4、dof5、dof6,分别代表绕x、y、z方向旋转的角位移。
(7)total rotation代表各方向角位移的矢量和。
(8)单击create按钮。
(9)在response栏中输入lowerdis。
(10)从response type下拉菜单中选择static displacement。
(11)单击节点A,并设定位移方向为dof2。
(12)单击create按钮,然后单击return按钮返回optimization面板,如图2-28所示。

图2-28 响应创建面板
step13 约束位移响应
该部分为分析设定约束的上限和下限。
(1)进入dconstraints面板。
(2)在constraint栏中输入c_upper。
(3)确认仅勾选upper bound选项。
(4)在upper bound栏中输入0.07。
(5)单击response,在弹出的界面中单击已经创建的响应upperdis。
(6)单击loadsteps,在弹出的界面中勾选已经创建的载荷步opposing forces。
(7)单击create按钮。
(8)在constraint栏中输入c_lower。
(9)确认仅勾选lower bound选项。
(10)在lower bound栏中输入-0.07。
(11)单击response,在弹出的界面中单击已经创建的响应lowerdis。
(12)单击loadsteps,在弹出的界面中勾选已经创建的载荷步opposing forces。
(13)单击create按钮。
(14)单击return按钮,返回optimization面板,如图2-29所示。

图2-29 约束创建面板